• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語 atoi関数)

C言語 atoi関数の使い方とエラーメッセージ

このQ&Aのポイント
  • C言語のatoi関数を使って入力された年号を西暦に変換するプログラムで、年号の入力チェックの部分がうまく動作しない問題があります。
  • 指定された年号が正しく入力されているかどうかをチェックし、正しく入力されていない場合にはエラーメッセージを表示する仕組みです。
  • しかし、atoi関数を使って変換された値がyear_name変数に正しく格納されないため、常にエラーメッセージが表示されてしまいます。

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

  • ベストアンサー
  • chipizou
  • ベストアンサー率44% (8/18)
回答No.2

年号をチェックしたいのでしたら、変換しないで、そのまま配列の中を見れば良いと思います。

kumagoryou
質問者

お礼

ありがとうございます! if( ( yn_buf[0] == 'm' ) || ( yn_buf[0] == 't' ) || ( yn_buf[0] == 's' ) || ( yn_buf[0] == 'h' ) ) でうまく出来ました! 年号がうまくいったら、年数のほうがうまくいっていないことが分かりました。また同じatoi関数です。 でも、もう少し粘ってみようと思います。 本当にありがとうございました!!

その他の回答 (1)

  • chipizou
  • ベストアンサー率44% (8/18)
回答No.1

atoiは数字の変換(数字から数値への変換)しか出来ません。それ以外の値が与えられた場合の動作は不定です。 年数を変換したいのではなくて、年号を変換したいのでしょうか?根本的な所に誤りがあるような気がします。

kumagoryou
質問者

お礼

早速のご解答ありがとうございます。 変換したいのは年号です。2文字以上の時エラーチェックをしたかったので、最初に文字列として取り込みました。 始めはscanfで%dで取り込んだ時はきちんと動いていたので文字でも大丈夫なのかと思っていました。 たまたま出来ていたのですね^^; やはり年号を変換するために根本的に見直したいと思います。ありがとうございました!

関連するQ&A