#2
ithaibo2013-04-13 10:51
|
只有本站会员才能查看附件,请 登录
插入操作:将串s1插入到串s中的第i个位置,并产生新串s2.但是出现了输出时,插入的那一部分出现了乱码。程序代码:
/*
* 建立串s="abcdefghijklmn"和串s1="xyz"
* 输出s
* 输出串s的长度
* 在串s的第9个字符位置插入串s1而产生串s2
* 输出串s2
* 删除串s中的第2个字符开始的5个字符而产生的串2
* 输出串s2
* 将串s的第2个字符开始的5个字符替换为s1而产生的串s2
* 输出串s2
* 提取串s中的第2个字符开始的10个字符而产生串s3
* 输出串s3
* 将串s1和串s2连接起来儿产生串s4
* 输出串s4
*/
#include <stdio.h>
#include <stdlib.h>
#define Max 100
typedef struct String{
char data[Max];
int length;
}SqString;
void CreatStr(SqString *s, char temp_s1[]);
void DispStr(SqString s);
int StrLen(SqString s);
SqString InserStr(SqString s, int i, SqString s1);
int main(void) {
SqString s, s1, s2, s3, s4;
char temp_s1[]="abcdefghijklmn";
char temp_s2[]="pqrst";
CreatStr(&s, temp_s1);
CreatStr(&s1, temp_s2);
DispStr(s);
printf("The length of the string of 's' is %d\n",StrLen(s));
s2=InserStr(s, 9, s1);
DispStr(s1);
DispStr(s2);
return 0;
}
void CreatStr(SqString *s, char temp_s1[]){
int i;
s->length=0;
for(i=0; temp_s1[i]!='\0'; i++)
s->data
[i]=temp_s1[i];
s->length=i;
}
void DispStr(SqString s){
int i;
if(s.length<=0)
return;
for(i=0; i<s.length;i++)
printf("%c",s.data[i]);
printf("\n");
}
int StrLen(SqString s){
return s.length;
}
SqString InserStr(SqString s, int i, SqString s1){//在串s的第i个字符位置插入串s1而产生串s2
int j;
SqString s2;
s2.length=0;
if(i<=0||i>s.length+1)
return s2;
for(j=0; j<i-1; j++)
s2.data[j]=s.data[j];
for(j=0; j<s2.length; j++)
s2.data[i+j-1]=s1.data[j];
for(j=i-1; j<s.length; j++)
s2.data[j+s1.length]=s.data[j];
s2.length=s.length+s1.length;
return s2;
}
* 建立串s="abcdefghijklmn"和串s1="xyz"
* 输出s
* 输出串s的长度
* 在串s的第9个字符位置插入串s1而产生串s2
* 输出串s2
* 删除串s中的第2个字符开始的5个字符而产生的串2
* 输出串s2
* 将串s的第2个字符开始的5个字符替换为s1而产生的串s2
* 输出串s2
* 提取串s中的第2个字符开始的10个字符而产生串s3
* 输出串s3
* 将串s1和串s2连接起来儿产生串s4
* 输出串s4
*/
#include <stdio.h>
#include <stdlib.h>
#define Max 100
typedef struct String{
char data[Max];
int length;
}SqString;
void CreatStr(SqString *s, char temp_s1[]);
void DispStr(SqString s);
int StrLen(SqString s);
SqString InserStr(SqString s, int i, SqString s1);
int main(void) {
SqString s, s1, s2, s3, s4;
char temp_s1[]="abcdefghijklmn";
char temp_s2[]="pqrst";
CreatStr(&s, temp_s1);
CreatStr(&s1, temp_s2);
DispStr(s);
printf("The length of the string of 's' is %d\n",StrLen(s));
s2=InserStr(s, 9, s1);
DispStr(s1);
DispStr(s2);
return 0;
}
void CreatStr(SqString *s, char temp_s1[]){
int i;
s->length=0;
for(i=0; temp_s1[i]!='\0'; i++)
s->data
[i]=temp_s1[i];
s->length=i;
}
void DispStr(SqString s){
int i;
if(s.length<=0)
return;
for(i=0; i<s.length;i++)
printf("%c",s.data[i]);
printf("\n");
}
int StrLen(SqString s){
return s.length;
}
SqString InserStr(SqString s, int i, SqString s1){//在串s的第i个字符位置插入串s1而产生串s2
int j;
SqString s2;
s2.length=0;
if(i<=0||i>s.length+1)
return s2;
for(j=0; j<i-1; j++)
s2.data[j]=s.data[j];
for(j=0; j<s2.length; j++)
s2.data[i+j-1]=s1.data[j];
for(j=i-1; j<s.length; j++)
s2.data[j+s1.length]=s.data[j];
s2.length=s.length+s1.length;
return s2;
}
代码如下