Kai*_*ili 1 c scanf segmentation-fault
while(1){
//Command prompt
char *command;
printf("%s>",current_working_directory);
scanf("%s",command);<--seg faults after input has been received.
printf("\ncommand:%s\n",command);
}
Run Code Online (Sandbox Code Playgroud)
我得到了一些不同的错误,它们看起来并不真实(除了此时的段错误).这个代码大约10分钟前工作正常,然后它无限循环printf命令,现在它在上面提到的行上出现故障.我唯一改变的是scanf(">%s",command);它目前是什么.如果我将命令变量更改为数组,它就可以工作; 显然这是因为存储是为它预留的.
gcc --std=c99 -W sfs.c 只是想弄清楚发生了什么.由于这是一个学校项目我永远不会再看到,我只会编写一些noob工作,这会让我的老板哭泣:)但是之后我想知道为什么会发生这种情况而不仅仅是制作一些修复它,如果有一些修复它为什么修复工作.
Mar*_*ins 11
scanf尝试将它读取的数据存储到参数中(command在您的情况下).该变量尚未初始化为指向有效内存.因此,为其分配内存的malloc将使其有效.它也可以在堆栈中声明:
char command[somearraysize];
Run Code Online (Sandbox Code Playgroud)
小智 11
char command[100];
scanf("%s",command);
Run Code Online (Sandbox Code Playgroud)
至于为什么这是必要的,我建议你读一本关于C的书,比如The C Programming Language.