这个scanf()出了什么问题?

我是以某种错误的方式使用scanf()吗?

char *input; scanf("%s", input); printf("%s\n", input); 

这在运行时失败了。

 char *input; 

这是一个指针。 它没有指向任何记忆。

 #include  #include  int main() { //char *input; char input[128]; memset(input, 0 ,sizeof(input)); scanf("%s", input); printf("%s\n", input); return 0; } 

声明char *只会创建一个指针,它不会为字符串分配任何内存。 您需要为输入分配内存。 您可以通过malloc动态执行此操作(完成后可以free执行),也可以声明像char input[100]这样的静态大小数组。

替换char *input; char input[1024] = {0};

你应该确保传递给scanf的参数指向一个可以保存输入的缓冲区