C言語で文字列を整数に変換するにはどうすればいいですか? 質問する

C言語で文字列を整数に変換するにはどうすればいいですか? 質問する

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)

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

おすすめ記事