为什么这段代码会崩溃?
在字符指针上使用strcat非法?
在字符指针上使用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.1代表空终止符.
话虽如此,你应该认真考虑使用strncat(或者可以说是更好但非标准的strlcat,如果它可用的话),它们经过边界检查,因此远远优于strcat.
原文地址:https://www.jb51.cc/c/111353.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。