• ベストアンサー

C言語での大文字小文字の変換について

C言語をはじめて使ったのですが、名前や名字をアルファベットで入力したとき、頭だけ大文字にして残りを小文字になるようにしたいのですがなかなかうまくできません。(たとえば…akiraと入力した時、Akiraとなるようにしたい) イニシャルのように A.B みたいにはできるのですが

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

  • ベストアンサー
  • Amanjaku
  • ベストアンサー率30% (219/716)
回答No.2

scanf実行時 aaの中身は aa[0] : 'a' aa[1] : 'k' aa[2] : 'i' aa[3] : 'r' aa[4] : 'a' aa[5] : 0 aa[0]を大文字に置き換える。 実際にはaa[0]が小文字であることを検証すべき

4960224
質問者

お礼

ありがとうございます。 置き換えに注意してやってみます。

その他の回答 (2)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.3

>頭のアルファベットを大文字にするには >a=aa[0],b=bb[0]; >A=a+('A'-'a'); >B=b+('A'-'a'); > >で、ここまではいいと思うのですが よろしくないです。 大文字に変換する関数 toupper() を使うべきです。

4960224
質問者

お礼

ありがとうございます。 なんとかやってみます。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>なかなかうまくできません。 もっと具体的に。どの辺が「うまくいかない」かを補足にどうぞ。 不明な点は「頭だけ」をどう判別するか、ですかね。 例えば、 hayashi,akira を Hayashi,Akira としたいですか? Hayashi,akira でよいですか?

4960224
質問者

補足

すみません補足します。(補足になってるかわかりませんが) 頭の部分だけとは 「hayashi,akira」 を 「Hayashi,Akira」 のようにしたいです。 char aa[10],bb[10],a,b,A,B; printf("名前をアルファベットで\n"); scanf("%s",aa); printf("名字をアルファベットで\n"); scanf("%s",bb); としたとき、 頭のアルファベットを大文字にするには a=aa[0],b=bb[0]; A=a+('A'-'a'); B=b+('A'-'a'); で、ここまではいいと思うのですが、次をどのようにすれば頭が大文字で残りを小文字なるのかがわかりません。

関連するQ&A

専門家に質問してみよう