为什么这段代码编译但没有运行?
int main() {
char *s;
scanf("%15s", s);
puts(s);
}
答案 0 :(得分:2)
因为s
是未初始化的指针,所以你不能在那里存储数据(因为“那里没有”)。
尝试:
char s[32];
相反,它为scanf()
可以写出32个字符的空间。
答案 1 :(得分:2)
你需要为scanf(...)
提供内存char *s
只是指向某些内存的指针,但不是内存本身。您可以malloc(...)
内存并让s
指向它,或者通过char s[16]
答案 2 :(得分:1)
对于初学者,请为scanf
电话提供适当的缓冲区。例如,尝试使用char *s
而不是仅仅是未初始化指针的char s[128]
。