C言語 atoi関数
入力された年号と年数から(和暦)、西暦を算出するプログラムです。
年号の入力チェックのところが、どうしてもうまくいきません。
year_name = atoi( yn_buf );
year_name にatoi()で変換された値が入りません。
初期値のゼロのままです。その為、年号に何を入力してもエラーメッセージが表示されてしまいます。
atoi関数の使い方が間違っているのでしょうか?
すみませんが、教えて下さい。
int year_name = 0; /* 年号を格納 */
int years = 0; /* 年数を格納 */
int check_flg = FALSE; /* 入力チェック 初期値としてエラー有状態とする*/
char yn_buf[32] = { '\0' }; /* 年号のチェック用 */
char y_buf[32] = { '\0' }; /* 年数のチェック用 */
printf( "<年号> 明治:m 大正:t 昭和:s 平成:h \n" );
printf( " 年号と年数を入力して下さい。 " );
scanf( "%s%s", &yn_buf, &y_buf );
printf("\n");
while( 1 ) /* 年号チェック */
{
if( strlen( yn_buf ) >= 2 ) /* 年号が2文字以上の時、エラー */
{
printf(" ▲エラーメッセージ 年号は1文字で入力して下さい。\n");
}
else
{
year_name = atoi( yn_buf );
if( ( year_name == 'm' ) || ( year_name == 't' ) ||
( year_name == 's' ) || ( year_name == 'h' ) )
{ /* 年号が正しく入力されている時 */
break;
}
else
{ /* 年号が正しく入力されていない時 */
printf(" ▲エラーメッセージ 年号は、「 m, t, s, h 」のいずれかを入力して下さい。\n");
}
}
printf( " 年号を入力して下さい。 " );
scanf( "%s", &yn_buf );
printf("\n");
}
お礼
早速のご回答有難うございました。 一応、くずし字辞書でも調べたのですが、癖みたいなのもあるのか、難しいですね。