C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス strtol

🔧 標準ライブラリ ・ stdlib.h ・ C89

strtol の使い方

C言語 標準ライブラリ関数リファレンス(無料公開)

書式

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 と一緒に使う関数

atoi文字列をint型の整数へ変換する。変換できない場合の挙動が未定義でエラー検出ができないため、エラーチェックが必要な信頼で… strtod文字列をdouble型浮動小数点数へ変換する。strtol同様に変換の終端位置を取得できるためエラー検出が可能で、ato… strtoul文字列を任意の基数でunsigned long型整数へ変換する。負符号-を渡すと2の補数表現に基づくラップアラウンドが起…

同じ分類(標準ライブラリ)の関数

abort abs atexit atof atoi bsearch calloc div exit free getenv labs malloc qsort rand realloc

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る