gpt4 book ai didi

c - 将字符追加到字符末尾

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

我试图在我的字符末尾添加一个空格,这是我正在测试的代码,它会返回一个Bus Error

int main() {
char* test = "Test";
printf("%s\n", test);
strcat(test, "a");
printf("%s\n", test);
return 0;
}

最佳答案

"Test" 是一个字符串字面量,你不能修改它。如果你改变:

char * test = "Test";

到:

char test[10] = "Test";

它会像您期望的那样工作。

编辑:在评论中有人讨论过这是否应该导致编译器警告。在 C 语言中,char * test = "Test"; 格式完全正确,不应导致任何警告。在任何理智的实现中,strcat() 都会提前很长时间编译,所以它不会给你任何警告,因为它需要一个 char * 作为它的第一个参数,也就是你传递给它的参数,也不应该导致警告。您可能拥有一个非常智能的编译器,它既能记住您将 test 指向一个字符串文字,又不会将它指向任何其他内容,因为 知道 strcat() 将更改它,但这似乎不太可能,所以我怀疑您是否会在这里收到任何警告。这是您必须知道并避免的事情之一。

我相信 C++ 中的情况有所不同。用 g++ -std=c++11 编译它给我一个 deprecated conversion from string constant to 'char *' 警告,你可以通过更改为 来消除它const char * test = "Test"; 当您尝试将 const char * 传递给 strcat() 时,这会给您一个新的错误,它需要一个普通的 char *。 C++ 类型检查比 C 更严格。

关于c - 将字符追加到字符末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19201414/

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