scanf在while循环中不起作用

时间:2016-04-19 10:20:08

标签: c file while-loop

我试图在文件中输入一些数字,因此创建了一个while循环。输入值后,我会询问用户是否希望重复此过程。但是,程序只打印第二个printf语句,while循环终止。该计划是:

git commit --amend # this will create a new patch
git push gerrit HEAD:refs/for/your_branch

为什么第二次扫描无效?

2 个答案:

答案 0 :(得分:3)

这是因为输入缓冲区中有一个剩余的换行符。

您可以通过在%c

中的scanf()之前提供空格来消费它
scanf(" %c", &ch);

作为旁注

1)请使用main()的标准定义,不要使用命令行参数

int main(void)

2)检查fopen()scanf()和其他函数调用的返回值。

答案 1 :(得分:0)

scanf("%c", &ch);

应该是

scanf(" %c", &ch);

请注意%c之前的空格。扫描整数(a)时有一个换行符,由%c拾取,因此您需要使用空格去掉它。