我已经编写了这段代码,但是没有用。最后显示一些额外的字符。这是代码:

// 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/

10-10 14:08