先頭へ戻る

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

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

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

先頭へ戻る

SCNxMAX

概要

16進数で表現された uintmax_t型の値を入力する際の scanf関数の変換指定に使う文字列。

ヘッダ

inttypes.h

形式

#define SCNoMAX "llx"

置換結果

uintmax_t型の値を入力する際に、scanf関数の変換指定に使う文字列。

詳細

例えば、uintmax_t型が unsigned long long型に相当する場合、16進数で入力するための変換指定に使う文字列は "llx" となるべきであり、SCNxMAXマクロは、そのように置換される。
なお、置換結果に "%" は含まれていないため、連続する文字列リテラルが連結されることを利用して、「"%" SCNxMAX」のように使う。

注意

使用例

#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>

int main(void)
{
    const char s[] = "3e8";

    uintmax_t a;
    sscanf( s, "%" SCNxMAX, &a );
    printf( "%" PRIuMAX "\n", a );

    return 0;
}

実行結果:

1000

関連

8進数で表現された uintmax_t型の値を入力するには SCNoMAX、10進数の場合は SCNuMAX を用いる。
scanf関数の変換指定子では、printf関数と違って、16進数のアルファベット(a~f) が大文字か小文字かの違いは無いため、SCNXMAX のようなマクロはない。

解説章


参考リンク


------------------------------------------------------------------------

更新履歴

'2018/5/11 用語を統一(文字列定数 -> 文字列リテラル)

'2018/2/1 printf、scanf系の関数で使う用語を、C言語編全体で統一する修正を行った。

'2018/1/22 新規作成。


------------------------------------------------------------------------

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

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

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

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー