我是否以某种错误的方式使用scanf()?
char *input;
scanf("%s", input);
printf("%s\n", input);
这在运行时失败。
答案 0 :(得分:6)
声明char *
只会创建一个指针,它不会为该字符串分配任何内存。您需要为输入分配内存。您可以通过malloc
(以及free
完成后动态执行此操作),也可以声明一个静态大小的数组,如char input[100]
。
答案 1 :(得分:2)
char *input;
这是一个指针。它没有指向任何记忆。
#include <stdlib.h>
#include <stdio.h>
int main()
{
//char *input;
char input[128];
memset(input, 0 ,sizeof(input));
scanf("%s", input);
printf("%s\n", input);
return 0;
}
答案 2 :(得分:0)
将char *input;
替换为char input[1024] = {0};
你应该确保传递给scanf的参数指向一个可以保存输入的缓冲区