入力文字列が整数に変換される次のシナリオがあります。
Example:
result = get_integer_from_string("100");
result == 100; // true
ライブラリを使用せずにこの関数を作成するにはどうすればよいですか? ライブラリを使用してそれを行うことができます。
次の手順を実行します:
コードを教えることはできません。学習には役立ちません。コードを自分で実装してみてください。非常に簡単です!!
文字列を最後から最初までループします。各桁を取得し、10 進数値に変換します。最初の (逆方向ループで) を乗算し1
、結果を格納します。秒を掛けて10
、前の結果に加算します。等々。
これはエラー状態になりやすいですが、文字列が有効な整数であれば機能するはずです:
int str2int(const char* str) {
int result = 0;
char* p = str;
for (;;) {
char c = *p++;
if (c < '0' || c > '9')
break;
result *= 10;
result += c - '0';
}
return result;
}
atoi()
数字以外の処理を停止し、空の入力に対しては 0 を返します。