我有以下代码段:
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,按回车键,然后输入文字?
谢谢!
答案 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);