我在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
知道为什么这不是来自用户的输入?
答案 0 :(得分:2)
gets
没有为您分配内存,因此您的示例会导致未定义的行为。此外,由于容易引起缓冲区溢出,因此非常不鼓励使用它。
使用
char name[SIZE];
fgets(name, SIZE, stdin);
代替。来自man gets
:
绝不使用
gets()
。
不应该更清楚。