Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在玩 C,我遇到了这个错误:
#include <stdio.h> int main () { char* foo; scanf("%s", foo); printf("entered %s", foo); return 0; }
scanf需要指针,foo是指针,但我得到总线错误。我怎样才能让它工作?
scanf
foo
您从不初始化foo,因此它指向内存中或多或少的随机位置。要么在堆栈上分配它。
char foo[10];
或者在堆上 malloc :
char *foo = (char *)malloc(10 * sizeof(char));
但是如果你 malloc,不要忘记 free()。
并注意缓冲区溢出;如果某些东西占用了缓冲区但没有最大大小,请非常小心。scanf例如,您可以通过do 指定最大长度%9s。scanf但是,不会考虑终止的空值,因此您需要传递比缓冲区长度小一的值。
%9s