输入不是从日食CDT中获取的

时间:2015-10-25 06:28:20

标签: c eclipse eclipse-cdt

我在Eclipse CDT"中尝试简单"打印您的名字C程序,但控制台没有读取用户输入。

    #include <stdio.h>
    int main()
    {
      char* name = NULL;
      printf("enter you name ");

      gets(name);

      printf("Hi");
      fflush(stdout);
      puts(name);

      return 0;
    }

这是我得到的输出:

    enter you name Hi

知道为什么这不是来自用户的输入?

1 个答案:

答案 0 :(得分:2)

gets没有为您分配内存,因此您的示例会导致未定义的行为。此外,由于容易引起缓冲区溢出,因此非常不鼓励使用它。 使用

char name[SIZE];
fgets(name, SIZE, stdin);

代替。来自man gets

  

绝不使用gets()

不应该更清楚。