Shammer's Philosophy

My private adversaria

getchar() の入力値

getchar() で値を受け取ると、よくわからない挙動をすることがある。
先日書いたプログラムだと新しい値を入力するたびに画面に「10」とか表示される。
よくわからなかったが、これは仕様っぽい。
次のようにするとこれを止めることができる。


main() {
 int type = 0;
 while( (type = getchar()) != EOF ){
  if( type != ' ' && type != '\n' ){
   printf("%d\n", type);
  }
 }
 return 0;
}


半角スペースとか、リターンキーの情報もしっかり条件分岐しないと
処理されてよくわからなくなってしまうようだ。
Javaで普通に書いていると、リターンの入力なんてもう決定を意味するものと
いう前提である程度書くようになってしまう(自分だけ?)。
こういう違いが見つかるとなんか新鮮♪