fgetc 是一次只get 一個字元
當 fgetc(stdin)執行時,
是要等有抓到 "enter" 或是 EOF 才會離開
如果user 打很多字,最後才按"enter"
則fgetc return 的值是第一個字,但後面第二個字到"enter"還在 steam 裡
所以下一次的fgetc(stdin)就會抓到下一個字元
可以用下列方式來清
void flush_input ( FILE *in )
{
int c;
while ( ( c = fgetc ( in ) ) != EOF && c != '\n' );
clearerr ( in );
}
printf 也是, 如果印的內容最後沒有"\n" 或 EOF
則不會印出,資料會被keep 在 stream裡
要在之後下 fflush(stdout);
才會印
10.19.2010
Subscribe to:
Posts (Atom)