0

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

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

这在运行时失败。

4

3 回答 3

6

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

于 2013-06-07T11:38:46.420 回答
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;
}
于 2013-06-07T11:46:43.703 回答
0

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

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

于 2013-06-07T11:42:22.887 回答