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

时间:2013-06-07 11:36:58

标签: c char scanf

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

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

这在运行时失败。

3 个答案:

答案 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的参数指向一个可以保存输入的缓冲区