Error while writing strcat() using pointers

。_饼干妹妹 提交于 2019-12-01 13:01:21

Because the pointers are pointers to literals, and not only are those read only the destination is not big enough to contain both the strings. For at least string1 you would want to use an array of at least big enough size to contain both strings (including the terminator). Like:

char string1[128] = "Stack";

or

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

The program tries to append characters to the literal string "stack". Don't do that; create an array of characters that's large enough to hold the result, copy the first string into the array, and then strcat the rest of the string.

Oh, and name your function something other than strcat. That name is already taken.

In this line:

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

you dereference s which points to one-past-the-end of the char array "stack". This causes segmentation fault error.

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

==>

 char name1[20];
 char name2[10];
 memcpy(name1,"stack") ;
 memcpy(name2,"overflow");
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!