我是否以某种错误的方式使用 scanf() ?
char *input;
scanf("%s", input);
printf("%s\n", input);
这在运行时失败。
声明 achar *
只会创建一个指针,它不会为字符串分配任何内存。您需要为输入分配内存。您可以通过malloc
(并且free
在完成后)动态地执行此操作,也可以声明一个静态大小的数组,例如char input[100]
.
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;
}
替换char *input;
为char input[1024] = {0};
您应该确保传递给 scanf 的参数指向可以保存您的输入的缓冲区