【发布时间】:2018-02-26 19:17:35
【问题描述】:
当我输入输入值并键入 ctrl + d 时,最后一行重复,这不应该发生。有人知道发生了什么吗?
while(1) {
if(getchar()==EOF)
break;
scanf(" %c %d", &s, &b)
}
例如,我输入 (input)m 2 的图像,如果我单击 ctrl+d 完成程序,结果是 5(output),然后再次打印 5,我不希望这样。
【问题讨论】:
-
打开调试器并单步执行代码以查看实际发生的情况。提示:
scanf将字符留在输入缓冲区中。 -
scanf("%c %d",&s,&b);在%c之前可能需要一个空格,但在%d之前有一个不必要的空格。大多数scanf格式说明符,包括%d会过滤掉前导空格,但%c不会,除非前面有空格。我建议scanf(" %c%d", &s, &b);注意每个逗号后面的额外空格——这是编码风格的问题。