≫ ホーム ≫ C言語ヘッダファイル別一覧 | C言語アルファベット別一覧 ≫ inttypes.h ≫ wcstoumax
ワイド文字列 (wide string) を uintmax_t 型に変換します.
#include <inttypes.h> #include <stddef.h> /* wchar_t のため */
intmax_t wcstoumax( const wchar_t * restrict nptr, wchar_t ** restrict endptr, int base );
wcstoumax 関数は nptr が指すワイド文字列のはじめの数字の部分を,base で指定された基数で uintmax_t 型の表現に変換します.nptr が指す文字列中に変換不可能なワイド文字 (wide character) があった場合には,そのワイド文字列へのポインタを endptr に格納します.
機能がよく似た関数に,wcstoumax 関数があります.
※1 指定可能なフォーマットは以下の通りです.([ ]で囲まれたところは省略可能です)
※2 空ポインタ (NULL) を指定した場合は格納されません.
※3 指定可能なフォーマットは以下の通りです.
以下に wcstoumax 関数を使用してワイド文字列を uintmax_t 型に変換するサンプルプログラムを示します.
/* header files */
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <inttypes.h>
/* main */
int main(void) {
wchar_t *number10 = L"+255"; /* 10進数255 */
wchar_t *number16 = L"+0xff"; /* 16進数255 */
wchar_t *number8 = L"+377"; /* 8進数255 */
wchar_t *error = L"snoopy+10";
wchar_t *endptr;
intmax_t x;
/* 10進数 数値のみ */
x = wcstoumax(number10, &endptr, 0);
wprintf(L"x = %"PRIuMAX", endptr = %s\n", x, endptr);
/* 16進数 数値のみ */
x = wcstoumax(number16, &endptr, 0);
wprintf(L"x = %"PRIuMAX", endptr = %s\n", x, endptr);
/* 8進数 数値のみ */
x = wcstoumax(number8, &endptr, 8);
wprintf(L"x = %"PRIuMAX", endptr = %s\n", x, endptr);
/* 10進数 数値 + 文字列 */
x = wcstoumax(error, &endptr, 0);
wprintf(L"x = %"PRIuMAX", endptr = %s\n", x, endptr);
return EXIT_SUCCESS;
}
サンプルプログラムの実行結果は以下のようになります.
x = 255, endptr = x = 255, endptr = x = 255, endptr = x = 0, endptr = snoopy+10
たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.
C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります.
オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.
ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.