我正在尝试学习CThe 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 %s\n", name1, name2);
printf("strcat out : %s", strcat(name1, name2));
return 0;
}
但我得到的输出为
stack overflow
Segmentation fault
为什么它不工作?任何人都可以澄清这里的错误吗..
因为指针是指向文字的指针,而不仅仅是那些只读目的地不够大,无法包含这两个字符串。至少对于string1
您需要使用一个至少足够大的数组来包含两个字符串(包括终止符)。喜欢:
char string1[128] = "Stack";
or
char string1[128];
strcpy(string1, "Stack");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)