69,369
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
char c,str1[100],str2[100],str3[300];
int i,j;
printf("Please input the first string\nConfirm by Enter\n");
gets(str1);
printf("Please input the second string\nConfirm by Enter\n");
gets(str2);
for(i=0;(c=str1[i])!='\0';i++)
{
str3[i]=str1[i];
};
j=i;
for(i=0;(c=str2[i])!='\0';i++,j++)
{
str3[j]=str2[i];
};
str3[j] = '\0'; //添加'\0'
printf("The string which has been connected is:\n%s",str3);
getch();
}
因为你代码能将两个字符串拼接起来,但是输出时却输出了其他的字符,所以就可以知道输出时并没有正常结束,输出字符串一般都是遇到‘\0’字符才会结束输出。而且你两个for循环判断都是以'\0'作为结束标识,所以数组最后一个'\0'字符并不会存入数组中,只需要在数组最后添加'\0'字符就能正常输出了。
#include "stdio.h"
#include "conio.h"
#include "math.h"
int main()
{
char c,str1[100],str2[100],str3[300];
int i,j;
printf("Please input the first string\nConfirm by Enter\n");
gets(str1);
printf("Please input the second string\nConfirm by Enter\n");
gets(str2);
for(i=0;(c=str1[i])!='\0';i++)
{
str3[i]=str1[i];
}
j=i;
for(i=0;(c=str2[i])!='\0';i++,j++)
{
str3[j]=str2[i];
}
str3[j]=str2[i];//'\0'要放进去才行。
printf("The string which has been connected is:\n%s",str3);
getch();
return 0;
}