如何用c语言连接两个字符串

krr*_*hna 1 c algorithm pointers

我有下面的代码连接两个字符串.第一个有while条件,但第二个有for循环失败.我通过以下输入独立运行它们.

int original[100]="c" , add[50] = "pgm";
concatenate_string(original, add);   
printf("String after concatenation is \"%s\"\n", original);
//strcat(original,add);
//printf("strcat is : %s",original);


void concatenate_string(char *original, char *add)
    {
       while(*original)
          original++;

       while(*add)
       {
          *original = *add;
          add++;
          original++;
       }
       *original = '\0';
    }

void strcat(char *original,char *add)
{
    for (;*original++;);
    for (;*add;)
         *original++=*add++;
    *(original)='\0';

}
Run Code Online (Sandbox Code Playgroud)

Gri*_*han 7

因为在第二个代码中,您将在nul \0符号后附加字符串:

for (;*original++;);
        ^  always increments, even after nul found 
Run Code Online (Sandbox Code Playgroud)

应该:

for (;*original; original++);
Run Code Online (Sandbox Code Playgroud)

注意:

代码:

for (;*original++;);
Run Code Online (Sandbox Code Playgroud)

相当于

while (*original++); 
Run Code Online (Sandbox Code Playgroud)

但不是你正在使用的.