- ベストアンサー
toupperに関して
C言語初心者です。 勉強のために本に書いてあるものを写しながら勉強しているのですが、 #include <stdio.h> #include <ctype.h> int main() { int c; while ((c=getchar())!=EOF){ c=toupper(c); putchar(c); } } 以上のものを写したのですが、入力した文字が小文字であろうと大文字であろうと関係なくそのまま表示されます。 どこを間違えているのでしょうか? どうぞよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
プログラム自体に間違いは無いと思います。 「a」と打ったら「A」と表示すると思ったのに「a」と表示される、ということでよいしょうか? 入力しているときは、コマンドプロンプトなりシェルなりが入力した文字をそのまま表示します(これをエコーバックと言います) 実際にプログラムに送られるのは、リターンキーを押した後です。 例) abcde(リターン)←エコーバック/リターン入力でまとめてプログラムへ送る ABCDE←プログラムからの出力
その他の回答 (1)
- anicicle
- ベストアンサー率36% (129/356)
回答No.1
ASCIIコードなら問題なく変換し表示するです。(VC6でも動作確認済み) 入力がマルチバイト文字だったりしませんか? ちなみに、toupper()は'a'~'z'を'A'~'Z'に変換する認識もあっていますよね?
お礼
そういうことだったんですか。 自分で勝手に入力した文字が即座に大文字になるものと思い込んでいました。ありがとうございます。