1. ホーム
  2. c

[解決済み】C言語で文字列を整数に変換する方法は?

2022-04-18 09:59:13

質問

C言語で文字列を整数に変換する別の方法があるかどうか調べようとしています。

私は自分のコードで定期的に次のようなパターンをしています。

char s[] = "45";

int num = atoi(s);

では、もっといい方法、別の方法はないのでしょうか?

解決方法は?

があります。 strtol の方が良いと思います。また、私は strtonum もしあれば、使ってみてください(ただし、ポータブルではないことをお忘れなく)。

long long
     strtonum(const char *nptr, long long minval, long long maxval,
     const char **errstr);

こちらもご覧ください strtoumaxstrtoimax であり、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)

ただし、エラーの扱いが異なる場合があります。 値を取得できない場合 を表現した場合、その動作は未定義です。 .