EOF到達まで
改行とEOF - Shammerismの続き。実装を以下のように変更してみて、どの程度まで getchar() を実行し続けることができるかを試してみた。
#include <stdio.h> int main(int argc, char * args[]){ int i = 0; puts("Type:"); while ( 1 ) { char c = getchar(); if ( c == EOF ){ printf("EOF received, counter is %d.\n", i); break; } else { i++; } } return 0; }
単純にキーボードを入力していては疲れるので、巨大なテキストファイルを作成し、それを標準入力から渡すようにしてみた。
$ wc ooo.txt 3194880 3194880 6389760 ooo.txt $ $ $ ./a.out < ooo.txt Type: EOF received, counter is 6389760.
うーん、、、どこかのタイミングで getchar() のバッファが溢れるような動作を期待していたのだが、この程度のサイズじゃそうはならなかった。getchar() するたびにバッファも空になっているのだろうか。やるだけ意味なさそうだ。