• ベストアンサー

toupperに関して

C言語初心者です。 勉強のために本に書いてあるものを写しながら勉強しているのですが、 #include <stdio.h> #include <ctype.h> int main() { int c; while ((c=getchar())!=EOF){ c=toupper(c); putchar(c); } } 以上のものを写したのですが、入力した文字が小文字であろうと大文字であろうと関係なくそのまま表示されます。 どこを間違えているのでしょうか? どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

プログラム自体に間違いは無いと思います。 「a」と打ったら「A」と表示すると思ったのに「a」と表示される、ということでよいしょうか? 入力しているときは、コマンドプロンプトなりシェルなりが入力した文字をそのまま表示します(これをエコーバックと言います) 実際にプログラムに送られるのは、リターンキーを押した後です。 例) abcde(リターン)←エコーバック/リターン入力でまとめてプログラムへ送る ABCDE←プログラムからの出力

noname#125895
質問者

お礼

そういうことだったんですか。 自分で勝手に入力した文字が即座に大文字になるものと思い込んでいました。ありがとうございます。

その他の回答 (1)

  • anicicle
  • ベストアンサー率36% (129/356)
回答No.1

ASCIIコードなら問題なく変換し表示するです。(VC6でも動作確認済み) 入力がマルチバイト文字だったりしませんか? ちなみに、toupper()は'a'~'z'を'A'~'Z'に変換する認識もあっていますよね?

関連するQ&A