gpt4 book ai didi

c - 使用 strcat 的段错误

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

这是我的代码:

char *name, name_log="log-";

------从用户那里获取'name'------

strcat(name_log, name);
char ext[] = ".log";
strcat(name_log, ext);

我最终需要得到的是 name_log = "log-'name'.log"但我遇到了段错误 :((。我做错了什么,我该如何解决?谢谢

最佳答案

首先,如果this 是您的代码:

char *name, name_log="log-";

那么 name_log 是一个 char, 而不是 char 指针。

假设这是一个拼写错误,您不能像那样附加到字符串文字。对字符串文字的修改是未定义的行为。

对于可变大小的字符串,如 user 所示,可能最安全的选择是分配另一个足够大的字符串来保存结果,例如:

char *name, *name_log = "log-", *ext = ".log";
// Do something to allocate and populate name
char *buffer = malloc (strlen (name_log) + strlen (name) + strlen (ext) + 1);
if (buffer == NULL) {
// Out of memory.
} else {
strcpy (buffer, name_log);
strcat (buffer, name);
strcat (buffer, ext);
// Do something with buffer.
free (buffer);
}

malloc 确保您有足够的空间来安全地执行所有字符串操作,为三个组件提供足够的字符以及空终止符。

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

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