初めまして。質問失礼いたします。
文字型の配列に数字以外の文字が入れられるとエラーメッセージを出し、終了するプログラムを作りたいと思っています。
以下のような関数を使ってコンパイルしてみましたが、文字を入力してもエラーメッセージが表示されず、終了できませんでした。
void c_deli(const char y[])
{
int i = 0;
while(y[i++])
if(y >= '0' || y <= '9'){
;
}
else{
puts("エラー");
break;
};
}
またmainで、以下のようにコードを書くとchar型で入力された値をint型に変換することができるでしょうか?
fgets(y,sizeof(y),stdin);
c_deli(y);
yi = atoi(y);
ご教授いただけると嬉しいです。よろしくお願いします。
文字型の配列に数字以外の文字が入れられたときの処理
Re: 文字型の配列に数字以外の文字が入れられたときの処理
ururu さんが書きました: if(y >= '0' || y <= '9'){
この条件はif(y >= '0' && y <= '9')
の間違いではありませんか?
Re: 文字型の配列に数字以外の文字が入れられたときの処理
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 文字型の配列に数字以外の文字が入れられたときの処理
変換はできますが関数c_deliを呼んでいる意味がなく、ururu さんが書きました: またmainで、以下のようにコードを書くとchar型で入力された値をint型に変換することができるでしょうか?
fgets(y,sizeof(y),stdin);
c_deli(y);
yi = atoi(y);
数字以外が入力されても構わず処理は続行されてしまいます。
入力値が正しいかどうかを戻り値で返すなどして、
変換を続行するかプログラムを終了するか分岐する必要があります。
Re: 文字型の配列に数字以外の文字が入れられたときの処理
回答を参考にコードを作り直したところ、問題なく処理できるようになりました。
迅速・丁寧な回答をありがとうございました!
迅速・丁寧な回答をありがとうございました!