Shammer's Philosophy

My private adversaria

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() するたびにバッファも空になっているのだろうか。やるだけ意味なさそうだ。