strtoll | Programming Place Plus C言語編 標準ライブラリのリファレンス

トップページC言語編標準ライブラリのリファレンス(名前順)

トップページC言語編標準ライブラリのリファレンス(ヘッダ別)


strtoll関数

概要

文字列を long long型に変換する。

ヘッダ

stdlib.h

形式

long long int strtoll(const char* restrict s, char** restrict endptr, int radix);

引数

s

対象の文字列。

endptr

変換できない最初の文字へのポインタを受け取るポインタ。不要であれば、ヌルポインタでも構わない。

radix

2~36 の範囲の基数。または 0。

戻り値

正常に変換された場合は、long long型に変換された結果。
変換結果が、表現可能な範囲を超えている場合は、正しい結果が正ならば LLONG_MAX、負ならば LLONG_MIN が返される。
最初の文字の時点ですでに変換不能な場合、0 が返される。

詳細 引数radix が 2~36 のいずれかであれば、s を radix で指定した基数の整数とみなし、long long型の値として返す。引数radix が 0 の場合には、先頭にある “0” や “0x”、“0X” という文字の並びに応じて、8進数、10進数、16進数のいずれかであるとみなし、やはり long long型の値として返す。
数として認識できない文字に行き当たると、その文字を指すポインタを引数endptr が指すポインタに渡す。引数endptr がヌルポインタの場合は、単に変換をその段階で中止する。
s の先頭に空白類文字が並んでいるとき、それらは無視される。続いて、符号 “+” や “-” があっても構わない。なお、整数定数の末尾に付ける L や u のようなサフィックスは認識しない。
変換結果が、表現可能な範囲を超えている場合、errnoERANGE が格納される。
注意

エラーの有無は errno によって調べなければならない。正常な変換によって 0 が得られる可能性があるため、戻り値だけで判定することは不可能である。

使用例
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <errno.h>
#include <limits.h>

int main(void)
{
    const char* str = "3050abc";
    char* s = NULL;

    errno = 0;
    long long l = strtoll(str, &s, 10);
    if ((l == LLONG_MIN || l == LLONG_MAX) && errno == ERANGE) {
        fputs("結果が表現できない\n", stderr);
        exit(EXIT_FAILURE);
    }
    else if (str == s) {
        fputs("変換できなかった\n", stderr);
        exit(EXIT_FAILURE);
    }

    printf("%lld\n", l);
    if (s != NULL) {
        puts(s);
    }
}

実行結果:

3050
abc
関連

strtod関数は double型に、strtoull関数は unsigned long long型に変換できる。また、atoi関数atol関数atof関数は、それぞれ仕様が単純だが、エラー検出が行えない。
float型に変換する strtof関数、long double型に変換する strtold関数、long型に変換する strtol関数がある。

解説章

第45章


参考リンク 🔗

本ページはアフィリエイトプログラムによる収益を得ています。
以下のリンクから商品を購入されると、Programming Place 管理者に紹介料が支払われています。


更新履歴 🔗

 「NULL」という表記を「ヌルポインタ」に修正。

 全体的に文章を見直し修正。

 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る