读取某个值并按Enter键时fgets冲突

时间:2014-11-29 20:40:12

标签: c text char format fgets

我有以下代码段:

int val;
scanf("%d", &val);
char *c = malloc(MAX * sizeof(char));
fgets(c, MAX, stdin);
puts(c);
free(c);

基本上应该读取一些整数命名值,然后读取一些文本(MAX字符)。

问题在于,当我运行它并输入10,例如,(val = 10)然后按回车键时,它将“跳过”fgets。我认为这是因为换行符使得fgets停止阅读。

如何更正此程序以便让我输入val,按回车键,然后输入文字?

谢谢!

1 个答案:

答案 0 :(得分:1)

在您的代码中,在fgets()之前添加getchar(),这将消耗存储在输入缓冲区中的最后一个 ENTER 键。

int val;
scanf("%d", &val);
char *c = malloc(MAX * sizeof(char));
getchar();
fgets(c, MAX, stdin);
puts(c);
free(c);