🔧 標準ライブラリ ・ stdlib.h ・ C89
strtol の使い方long strtol(const char *s, char **endptr, int base);
文字列を任意の基数(2〜36、0で自動判定)でlong型整数へ変換する。変換できなかった位置をendptrで取得できるため、atoiと違いエラー検出が可能な安全な変換関数。 基数に0を指定すると、0x接頭辞なら16進数、0接頭辞なら8進数として自動判定してくれる。
#include <stdlib.h>
#include <stdio.h>
int main(void) {
char *end;
long n = strtol("123abc", &end, 10);
printf("%ld, rest=%s\n", n, end);
return 0;
}
⚠️ 変換範囲を超えるとerrnoにERANGEが設定されLONG_MAX/LONG_MINが返る。数値変換にはatoiより優先して使うべき。
アプリの関数リファレンスで引く(無料・登録不要) 関数一覧へ
strtol と一緒に使う関数もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。