加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

为什么这段代码会崩溃?

发布时间:2020-12-16 03:26:36 所属栏目:百科 来源:网络整理
导读:为什么这段代码会崩溃? 在字符指针上使用strcat非法? #include stdio.h#include string.hint main(){ char *s1 = "Hello,"; char *s2 = "world!"; char *s3 = strcat(s1,s2); printf("%s",s3); return 0;} 请在引用数组和指针时给出正确的方法. 解决方法
为什么这段代码会崩溃?
在字符指针上使用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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读