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);
}
我遇到了一些不同的错误,它们看起来并不真实(除了此时的段错误)。这个代码大约10分钟前工作正常,然后它无限循环printf命令,现在它在上面提到的行上出现故障。我唯一改变的是scanf(">%s",command);
到现在的状态。如果我将命令变量更改为数组,它就可以工作;显然这是因为存储是为它预留的。
gcc --std=c99 -W sfs.c
试图弄清楚发生了什么。由于这是一个学校项目,我永远不会再看到,我只会编写一些noob工作,这会让我的老板哭泣:)但是之后我想知道为什么这种情况正在发生,而不只是为它做一些修复,如果有一些修复它为什么修复工作。
答案 0 :(得分:11)
scanf尝试将其读取的数据存储到参数中(command
)。该变量尚未初始化为指向有效内存。因此,为其分配内存的malloc将使其有效。它也可以在堆栈中声明:
char command[somearraysize];
答案 1 :(得分:11)
char command[100];
scanf("%s",command);
至于为什么这是必要的,我建议你读一本关于C的书,比如The C Programming Language。