题目是这样的:从键盘上输入两个字符串(长度不大于20)和整数n(0<n<=20),要求将第二个字符串插在第一个字符串的n位置开始处并输出。
示例如第一个字符串为"you are ok."
第二个字符串为"fine and "
输入的整数为8,则表示将fine插在ok前面(y前面为位置0,o前面的位置为8),输出为you are fine and ok.
然后我的程序是:#include <stdio.h>
int main()
{
char str1[20],str2[20];
int n,n1,n2,i=0,j=0,k;
printf("请输入第一个字符串:\n");
gets(str1);
printf("请输入第二个字符串:\n");
gets(str2);
printf("请输入一整数:\n");
scanf("%d",&n);
if(n<=0||n>20)
{
do
{printf("输入错误,请重新输入!\n");
scanf("%d",&n);
}while(n<=0||n>20);
}
while(str1[i]!=str1[k])
i++;
while(str1[i++]=str2[j++]!='\0')
printf("链接后的字符串:\n");
puts(str1);
return 0;
}但结果不能运行呀~~~~!请大家看看我哪里错了
修改后,情况好转很多,但结果还是不对呀。结果输不出N后的字符串了~~我想应该是方法出问题了
追答可能吧,不过我没有仔细阅读你的代码,我只是发现了最明显的错误
又发现了个新问题,你的str1,起码得是20+20+1吧
还有就是你的str1和str2的Buffer实在太小,如果输入者不守规矩输入了大于20的字符串,你的程序就溢出了
帮看下吧。。这是我的作业,写到这里卡住了,急死了~
追答flag = 1;
for (i = 0; i = n) {
flag = 0;
puts(str2);
}
putc(str1[i]);
}
还是不对。。
我开始也怀疑这一步,我这一步的目的是将前字符串的下标定位在K的位置然后插入第二个字符串,这样做对么?如果不对该怎么做?
追答不是已经定位到n了吗?你先输出str1的前n位,然后输出str2,再输出str1剩余的部分不就行了
追问汗。。还是不行,我把while(str1[i]!=str1[k])里面的K改成N了,也没成功。。
追答不要这么做,照我说的做
追问想不出那要怎么编写啊?能写下这步的程序么?谢谢了
追答for(i=0;i<n;i++){
putc(str1[i]);
}
puts(str2);
for(i=n;str[i]!='\n';i++){
putc(str1[i]);
}
//试试,我也不知道对不对