gpt4 book ai didi

c - Scanf 段错误

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

我正在为我的 C 类(class)布置作业,我正在尝试接收用户的输入并将其存储在一个变量中,以便稍后在我的代码中使用。这是我的主要功能的样子,

int main() {
// Variables here
char* inputLine[10];

do {
printf("Insert number....");
scanf("%s\n", inputLine);
// More stuff here
}
return 0;
}

这段代码给了我一堆警告,warning: format specified type 'char *' but the argument has type 'char **' [-Wformat],如果我更改变量声明到,

char* inputLine = NULL;

当我执行我的代码时出现段错误,有人可以向我解释我做错了什么,以及当我初始化这个变量时内存中发生的事情的差异吗?

最佳答案

char* inputLine[10];

--> 是一个包含十个指向 char 的指针的数组

printf 的格式 %s期望类型为 char * 的参数,但您提供的类型为 char **

就用

char inputLine[10];

为避免可能的缓冲区溢出,您应该使用

scanf("%9s", inputLine); //Notice the size with %s

9只是因为 C 字符串是空终止的 ( '\0' ) 所以它的一个额外字节放在最后

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

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