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

标签 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';

}

最佳答案

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

for (;*original++;);
        ^  always increments, even after nul found 

应该是:

for (;*original; original++);

注意:

代码:

for (;*original++;);

相当于

while (*original++); 

但不是你正在使用的。

关于c - c语言如何连接两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18629554/

相关文章:

c++ - 复杂多边形的凸分解?

c - 如何正确定义函数返回的结构?

c++ - 我可以模仿在 C++ 中重新定义 bool 的 C 头文件吗?

c - 在 __m256i vector 中水平累积运行总计(前缀总和)

c - gtk 中无边框的 MessageDialog

c++ - 手动对象所有权与智能指针

c - 这些代码行怎么会导致完全相同的程序有时崩溃但其他程序运行良好?

c - 获取链接静态库时使用的存档成员列表

c - 找到二进制基础的最快方法

c# - 寻找最佳线环绕宽度以最大化垂直相同值邻居的数量