C で文字列を整数に変換する別の方法があるかどうかを調べようとしています。
私は定期的にコード内で次のパターンを採用しています。
char s[] = "45";
int num = atoi(s);
それで、もっと良い方法や別の方法はあるのでしょうか?
ベストアンサー1
があるstrtol
どちらが優れていると思います。また、私はstrtonum
なので、お持ちの場合はそれを使用してください(ただし、ポータブルではないことに注意してください)。
long long
strtonum(const char *nptr, long long minval, long long maxval,
const char **errstr);
あなたは下記にもご興味がおありかもしれませんstrtoumax
そしてstrtoimax
これらは C99 の標準関数です。たとえば、次のように記述できます。
uintmax_t num = strtoumax(s, NULL, 10);
if (num == UINTMAX_MAX && errno == ERANGE)
/* Could not convert. */
とにかく、次のものには近づかないでくださいatoi
:
atoi(str) の呼び出しは以下と同等です:
(int) strtol(str, (char **)NULL, 10)
ただし、エラーの処理は異なる場合があります。値を表現できない場合、動作は未定義です。