如题所述
第1个回答 2011-04-21
的理解是:如果n位置是字符'X',那么插入字符后为:Xbbbb(设"bbbb"为插入的字符)
//按照你介绍,加上空格这个字符,'o'前面的位置应该是9
//第二,你的字符串太小了,如果str1里的字符为12个,str2里的字符10个,这样插入的话很容易就溢出
//第三,插入的方法不对
#include <stdio.h>
int main()
{
char str1[100],str2[100];//我改为100,使它们足够用
int n,n1,n2,i=0,j=0,k;
int size1=0;//用来记录str1里的字符数
int size2=0;//用来记录str2里的字符数
printf("请输入第一个字符串:\n");
gets(str1);
printf("请输入第二个字符串:\n");
gets(str2);
printf("请输入一整数:\n");
scanf("%d",&n);
for(i=0;i<100;i++)//计算str1里的字符数
for(i=0;i<100;i++)//计算str2里的字符数
//还有其他的情况例如字符数过多(str1用了80个,str2有30个)等待情况都可以通过这两个记录来进行判断,就不赘述了
if(n<=0||n>size1)//判断条件"n<=0||n>20"也不对,在n=18处插入一个大小为4的字符串是不行的
//我用这个判断插入点是否在str1的那些字符内,自己定的,好像你没这个要求
{
do
{printf("输入错误,请重新输入!\n");
scanf("%d",&n);
}while(n<=0||n>size1);
}
/* while(str1[i]!=str1[k])
i++;
while(str1[i++]=str2[j++]!='\0')
printf("链接后的字符串:\n");
puts(str1);
你的这个实现插入的语句有问题,在插入的时候,
要先找到插入点,将str1的插入点之后的字符往后挪,
以空处size2个长度来存放str2的字符
*/
for(i=size1+size2-1;i>n;i--)//后挪
str1[i]=str1[i-size2];//OK
for(i=n;i<n+size2;i++)//插入
//OK
puts(str1);
return 0;
}
另外,站长团上有产品团购,便宜有保证
//按照你介绍,加上空格这个字符,'o'前面的位置应该是9
//第二,你的字符串太小了,如果str1里的字符为12个,str2里的字符10个,这样插入的话很容易就溢出
//第三,插入的方法不对
#include <stdio.h>
int main()
{
char str1[100],str2[100];//我改为100,使它们足够用
int n,n1,n2,i=0,j=0,k;
int size1=0;//用来记录str1里的字符数
int size2=0;//用来记录str2里的字符数
printf("请输入第一个字符串:\n");
gets(str1);
printf("请输入第二个字符串:\n");
gets(str2);
printf("请输入一整数:\n");
scanf("%d",&n);
for(i=0;i<100;i++)//计算str1里的字符数
for(i=0;i<100;i++)//计算str2里的字符数
//还有其他的情况例如字符数过多(str1用了80个,str2有30个)等待情况都可以通过这两个记录来进行判断,就不赘述了
if(n<=0||n>size1)//判断条件"n<=0||n>20"也不对,在n=18处插入一个大小为4的字符串是不行的
//我用这个判断插入点是否在str1的那些字符内,自己定的,好像你没这个要求
{
do
{printf("输入错误,请重新输入!\n");
scanf("%d",&n);
}while(n<=0||n>size1);
}
/* while(str1[i]!=str1[k])
i++;
while(str1[i++]=str2[j++]!='\0')
printf("链接后的字符串:\n");
puts(str1);
你的这个实现插入的语句有问题,在插入的时候,
要先找到插入点,将str1的插入点之后的字符往后挪,
以空处size2个长度来存放str2的字符
*/
for(i=size1+size2-1;i>n;i--)//后挪
str1[i]=str1[i-size2];//OK
for(i=n;i<n+size2;i++)//插入
//OK
puts(str1);
return 0;
}
另外,站长团上有产品团购,便宜有保证