- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:カタカナイニシャル 「オ」 の氏名を表示するプログラムエラー訂正につい)
C言語プログラムエラー訂正:カタカナイニシャル「オ」の氏名表示
このQ&Aのポイント
- C言語を学習して1ヶ月の中村です。作成したプログラムで警告が表示され、exeファイルの作成ができません。原因と訂正方法を教えてください。
- プログラムの内容は、カタカナのイニシャルが「オ」で始まる氏名を表示するものです。
- ご指導いただけると幸いです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
警告の原因はchar型変数との比較に256以上の値の定数を使っているせいです プログラム中のカタカナをすべて半角にしてみては(ファイルの文字コードがシフトJISの場合)
その他の回答 (4)
- titokani
- ベストアンサー率19% (341/1726)
回答No.5
wchar_tを使ってunicodeで処理する方法もあります。 これだと、全角のまま、カタカナ一文字をwchar_t1つ分として扱えます。
- koi1234
- ベストアンサー率53% (1866/3459)
回答No.4
理由は既に出てるので修正方法 strcmp もしくは strncmp を使えば解決 比較のサイズ判定には strlen が使えます ※ 関数によっては文字終端が無いとプログラムが飛びますので注意
質問者
お礼
strcmp, strncmp, strlen, の利用アドバイス情報に対し、参考させて頂きました。おかげ様で、問題解決にいたりました。ご協力ありがとうございました。
- cotae_bb
- ベストアンサー率53% (51/95)
回答No.3
namae[kaisuu][0]== 'オ' これは1バイトと2バイトを比較しています 全角は2バイトなので単純に比較ができません。 無理やりですが以下の方法で比較ができます moji[] = "オ"; if(namae[kaisuu][0] == moji[0] && namae[kaisuu][1] == moji[1]){ //イニシャルが「オ」 } ですが、他の方の言うとおり半角で処理をするなどしたほうがいいかと思います。
質問者
お礼
当方質問に対し、ご親切な回答を頂きありがとうございました。ご回答いただきました関係者のお陰でその日に問題解決にいたりました。この投稿の場をお借りし深く御礼申し上げます。 なかむら
- SaKaKashi
- ベストアンサー率24% (755/3136)
回答No.1
全角文字なので1バイト比較の namae[kaisuu][0]== ではできませんね。
質問者
お礼
わかりました。皆様投稿者のご協力を得まして、コンパイル作業は円滑に終了しました。ありがとうございます。 なかむら
お礼
当方質問に対し、早速ご投稿による返事を賜りありがとうございました。ご指摘の通り、プログラム中のカタカナ部分を半角にしましたら容易に exe ファイルを作成できました。ご支援ありがとうございました。 なかむら