gpt4 book ai didi

c - C 中 scanf 和字符串的段错误

转载 作者:行者123 更新时间:2023-11-30 18:55:36 25 4
gpt4 key购买 nike

我是 c 初学者,我在 scanf 和字符串方面遇到问题。

这是我写的有关我的问题的示例。

#include <stdio.h>
#include <string.h>

int main(void)
{
char* string;
scanf("%s", &string);
if (strcmp(string, "Foo") == 0) //segmentation fault here
printf("Bar");
}

基本上,这段代码可以编译,但是当我运行它时,我在 strcmp() 中遇到段错误

如果我用“&string”替换该行中的“string”,它可以工作,但我从编译器中收到此错误

/usr/include/stdio.h:362:12: note: expected 'const char * __restrict__' but argument is of type 'char **'

这让我觉得这个解决方案并不是很理想。

如果我像这样声明字符串:

char string[100];

可以在没有任何警告的情况下工作,但这也不理想,因为我不确定字符串有多大。

我是否缺少更好的解决方案,或者这些是我唯一的选择?

谢谢。

最佳答案

char* string;
scanf("%s", &string);

string 未指向任何有效的内存位置。使用 malloc 将内存分配给字符数组并将输入复制到其中。确保分配的内存有空间用于空终止字符。请记住释放内存以避免泄漏。

关于c - C 中 scanf 和字符串的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27306505/

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