関数strtoiでreturn (str ? 0 : 1);がしっくりしないので、説明をお願いします
str ? 0 : 1はstrが真なら0、偽なら1を返すのはわかるのですが、たとえば
文字列”AB"を打ち込んだとき、関数strtoiではどこを実行してどこまで進むのですか。
一気にx = sign;まで行くんですか。その時のstr==0になると思うのですが、
そこのところがよくわかりません。教えてください。
//文字列strを int型の値に変換した結果を*xに格納する int strtoi(const char *str, int *x) { int sign = 1; // 符号 while (isspace(*str)) // 空白類文字を読み飛ばす str++; switch (*str) { case '+' : str++; break; // 正符号 case '-' : str++; sign = -1; break; // 負符号 } for (*x = 0; *str >= '0' && *str <= '9'; str++) *x = *x * 10 + (*str - '0'); *x *= sign; return (*str ? 0 : 1); } int main(void) { int num; char buffer[100]; while (1) { printf("整数値を入力せよ:"); scanf("%s", buffer); if (!strtoi(buffer, &num)) puts("\a整数値に変換できませんでした。"); else { if (num == 9999) break; printf("あなたは%dと入力しましたね。\n", num); } } return (0); }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/17 02:36
2018/03/17 04:28
退会済みユーザー
2018/03/17 07:36