|
scanfは読みとらなかった文字を食い残してきます。
ですので改行コードを読み込んでしまい結果的に
入力1、改行、入力2、改行、入力3、
で5回のループが回ってしまいます。
次のコードでそれがよくわかるんじゃないかと思います。
改行コードは直接は目に見えないのですが文字コード0xaとして表示されるはず。
処理系によって異なるかもしれません。
#include <stdio.h>
int main(void)
{
int i;
char var;
for (i = 0 ; i < 5 ; i++) {
printf("%d: ", i);
scanf("%c" , &var);
printf("格納されたのは%c[%#x]\n", var, var);
}
return 0;
}
|