• ベストアンサー

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");

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

  • ベストアンサー
  • kmb01
  • ベストアンサー率45% (63/138)
回答No.1

a,bの内容を確認してください。 うちの環境ではbには改行文字が入りました。 1回目のscanfのあとでfflush(stdin)すれば動作しますが scanfではなくfgetsを使うほうがいいと思います。

akiko-um
質問者

お礼

ありがとうございます。 動作しました。 理由もネットで確認できました。 ありがとうございました。

akiko-um
質問者

補足

a,bの内容を確認するには どうすればいいのでしょうか? あわせて教えて頂けないでしょうか。

その他の回答 (1)

noname#240783
noname#240783
回答No.2

お邪魔します。 > 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」ラインフィード=改行コードです。

akiko-um
質問者

お礼

ありがとうございました。 確認できました。

関連するQ&A

専門家に質問してみよう