c/c++语言开发共享使用指针编写strcat()时出错

我正在尝试The C programming Language by K&R学习C The C programming Language by K&R 。 我正在尝试使用指针编写strcat()程序。

 char *strcat (char *s, char *t){ char *d; d = s; while(*s++); s--; while(*s++ = *t++); return d; } int main () { char *name1; char *name2; name1 = "stack" ; name2 = "overflow"; printf("%s %sn", name1, name2); printf("strcat out : %s", strcat(name1, name2)); return 0; } 

但我得到的是输出

 stack overflow Segmentation fault 

为什么不起作用? 任何人都可以澄清这里的错误..

    因为指针是指向文字的指针,并且不仅仅是那些读取目标不足以包含两个字符串。 对于至少string1您可能希望使用至少足够大的数组来包含两个字符串(包括终结符)。 喜欢:

     char string1[128] = "Stack"; 

    要么

     char string1[128]; strcpy(string1, "Stack"); 

    程序尝试将字符追加到文字字符串"stack" 。 不要那样做; 创建一个足够大的字符数组来保存结果,将第一个字符串复制到数组中,然后strcat其余的字符串。

    哦,并将你的函数命名为strcat以外的东西。 该名称已被使用。

    在这一行:

     while(*s++ = *t++); 

    你解引用s指向char数组"stack"的一个结尾。 这会导致segmentation fault错误。

      char *name1; char *name2; name1 = "stack" ; name2 = "overflow"; 

    ==>

      char name1[20]; char name2[10]; memcpy(name1,"stack") ; memcpy(name2,"overflow"); 

      以上就是c/c++开发分享使用指针编写strcat()时出错相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/518770.html

      (0)
      上一篇 2020年12月4日
      下一篇 2020年12月4日

      精彩推荐