我已经编写了这段代码,但是没有用。最后显示一些额外的字符。这是代码:
// Program to concate/join two string
#include<stdio.h>
#include<string.h>
main()
{
int i,j,n=0;
char str[100],str2[100],str3[100];
printf("Enter string 1:\n");
gets(str);
printf("Enter string 2:\n");
gets(str2);
for(i=0;str[i]!='\0';i++)
{
str3[i]=str[i];
n=n+1;
}
for(i=0,j=n;str2[i]!='\0';i++,j++)
{
str3[j]=str2[i];
}
printf("The concanted sring is: \n");
puts(str3);
}
最佳答案
完成复制循环后,用str3
终止'\0'
字符串:
for(i=0,j=n;str2[i]!='\0';i++,j++)
{
str3[j]=str2[i];
}
str3[j] = '\0'; // proper termination of the `str3`.
否则,
str3
将继续直到遇到内存中的第一个随机'\0'
。这就是为什么在打印str3
时会得到多余字符的原因。另请阅读:gets() function in C和
Why is the gets function so dangerous that it should not be used?
避免在程序中使用
gets()
!关于c - 如何在C中连接两个字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49091599/