gpt4 book ai didi

c - strcat 给出段错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:04:31 25 4
gpt4 key购买 nike

为什么会出现以下段错误?

我在 unix 上使用标准的 c99、icc 编译器。我不能让它不是段错误,我很好奇为什么。我对 strcat/strcpy 不是很熟悉。

char *first = "First";
char *second = "Second";
char *both = (char *)malloc(strlen(first) + strlen(second) + 2);

strcpy(both, first);
strcat(both, " ");
strcat(both, second);

sprintf("%s %s", first, second);

最佳答案

sprintf("%s %s", first, second);

sprintf 的第一个参数是目标缓冲区。你已经给它一个常量字符串作为目标缓冲区。

如果您只是想打印一些东西,您是指 printf 吗?

否则,正确的用法应该是这样的:

// declaration of "dest" left as exercise for the reader
//
sprintf(dest, "%s %s", first, second);

不过,sprintf 已被 snprintf 取代,后者可以更好地避免缓冲区溢出。

关于c - strcat 给出段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12985884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com