- ベストアンサー
Cプログラミング(文字入力)
文字を二つ入力して、TかFであれば 1~3、それ以外は4を返すプログラムです。 下記のソースでは正常に動作しませんでした。 どの文法が間違っているか判らないので、 どなたか指摘頂けないでしょうか。 宜しくお願いします。 char a,b; printf("1つめの文字を入力してください-->"); scanf("%c",&a); printf("2つめの文字を入力してください-->"); scanf("%c",&b); if(a=='T'&&b=='T') printf("結果:1\n"); else if((a=='T'&&b=='F')||(a=='F'&&b=='T')) printf("結果:2\n"); else if(a=='F'&&b=='F') printf("結果:3\n"); else printf("結果:4\n");
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
a,bの内容を確認してください。 うちの環境ではbには改行文字が入りました。 1回目のscanfのあとでfflush(stdin)すれば動作しますが scanfではなくfgetsを使うほうがいいと思います。
その他の回答 (1)
お邪魔します。 > a,bの内容を確認するには > どうすればいいのでしょうか? 例えば printf( "a = 16進:%02x, b = 16進:%02x\n", a, b ); など、%x で受ければ、文字コードが16進数で表示されます。 ご質問のデバッグ前の状態で、'T'+リターン と入力すると a = 16進:54, b = 16進:0a と表示されてしまうでしょう。 &h54は'T'の文字コード、 &h0aは「LF」ラインフィード=改行コードです。
お礼
ありがとうございました。 確認できました。
お礼
ありがとうございます。 動作しました。 理由もネットで確認できました。 ありがとうございました。
補足
a,bの内容を確認するには どうすればいいのでしょうか? あわせて教えて頂けないでしょうか。