为什么这段代码会崩溃?
正在使用strcat
字符指针非法?
#include <stdio.h>
#include <string.h>
int main()
{
char *s1 = "Hello, ";
char *s2 = "world!";
char *s3 = strcat(s1, s2);
printf("%s",s3);
return 0;
}
请给出引用数组和指针的正确方法。
问题是s1
指向一个字符串文字,并且您试图通过附加来修改它s2
到它。不允许您修改字符串文字。您需要创建一个字符数组并将两个字符串复制到其中,如下所示:
char *s1 = "Hello, ";
char *s2 = "world!";
char s3[100] = ""; /* note that it must be large enough! */
strcat(s3, s1);
strcat(s3, s2);
printf("%s", s3);
“足够大”意味着至少strlen(s1) + strlen(s2) + 1
. The + 1
是为了解释空终止符。
话虽这么说,你应该认真考虑使用strncat
(或者可以说更好但非标准strlcat
,如果可用的话),这是边界检查的,因此远远优于strcat
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)