【お題】甲子園での思い出の残し方

C言語初心者です。

勉強のために本に書いてあるものを写しながら勉強しているのですが、


#include <stdio.h>
#include <ctype.h>

int main()
{
int c;

while ((c=getchar())!=EOF){
c=toupper(c);
putchar(c);
}

}

以上のものを写したのですが、入力した文字が小文字であろうと大文字であろうと関係なくそのまま表示されます。

どこを間違えているのでしょうか?
どうぞよろしくお願いいたします。

A 回答 (2件)

プログラム自体に間違いは無いと思います。



「a」と打ったら「A」と表示すると思ったのに「a」と表示される、ということでよいしょうか?

入力しているときは、コマンドプロンプトなりシェルなりが入力した文字をそのまま表示します(これをエコーバックと言います)
実際にプログラムに送られるのは、リターンキーを押した後です。

例)
abcde(リターン)←エコーバック/リターン入力でまとめてプログラムへ送る
ABCDE←プログラムからの出力
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/04/14 22:34

ASCIIコードなら問題なく変換し表示するです。

(VC6でも動作確認済み)
入力がマルチバイト文字だったりしませんか?
ちなみに、toupper()は'a'~'z'を'A'~'Z'に変換する認識もあっていますよね?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!