Last Update 2012/07/05
引数で指定される文字列の最初の数値(基数によって対象文字が異なる)表記部分をlong型に変換します。
数値の前にある空白文字列は無視されます。
基数は2〜36もしくは0が指定可能です。
基数が0で「0x」または「0X」で始まる場合は16進数として変換されます。
基数が0で「0」から始まる場合は8進数として変換されます。
基数が0で上記以外の場合は10進数として変換されます。
数値の前にある空白文字列は無視されます。
基数は2〜36もしくは0が指定可能です。
基数が0で「0x」または「0X」で始まる場合は16進数として変換されます。
基数が0で「0」から始まる場合は8進数として変換されます。
基数が0で上記以外の場合は10進数として変換されます。
戻り値1 = strtol( 引数1 , 引数2 , 引数3 )
戻り値1 :
long
引数1の最初の数値表記部分を変換した値
変換が実行されない場合は0
値がオーバーフロー : LONG_MAX
値がアンダーフロー : LONG_MIN
変換が実行されない場合は0
値がオーバーフロー : LONG_MAX
値がアンダーフロー : LONG_MIN
引数1 :
char *
変換対象となる文字列へのポインタ
引数2 :
char **
変換された部分の次の文字へのポインタへの参照(NULL以外の場合)
引数3 :
int
変換する際の基数
(例)
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *pc;
printf("変換結果(strtol) : %ld\n", strtol("123", (char **)NULL, 10));
printf("変換結果(strtol) : %ld\n", strtol("123", (char **)NULL, 8));
printf("変換結果(strtol) : %ld\n", strtol("0123", (char **)NULL, 0));
printf("変換結果(strtol) : %ld\n", strtol("123", (char **)NULL, 16));
printf("変換結果(strtol) : %ld\n", strtol("0x123", (char **)NULL, 0));
printf("変換結果(strtol) : %ld\n\n", strtol("-345", (char **)NULL, 10));
printf("変換結果(strtol) : %ld\n", strtol("123abcdefghij", &pc, 10));
printf("変換後の次の文字 : %s\n\n", pc);
printf("変換結果(strtol) : %ld\n", strtol("123abcdefghij", &pc, 16));
printf("変換後の次の文字 : %s\n\n", pc);
printf("変換結果(strtol) : %ld\n", strtol("0x123abcdefghij", &pc, 0));
printf("変換後の次の文字 : %s\n\n", pc);
return 0;
}
実行結果
変換結果(strtol) : 123
変換結果(strtol) : 83
変換結果(strtol) : 83
変換結果(strtol) : 291
変換結果(strtol) : 291
変換結果(strtol) : -345
変換結果(strtol) : 123
変換後の次の文字 : abcdefghij
変換結果(strtol) : 4893429231
変換後の次の文字 : ghij
変換結果(strtol) : 4893429231
変換後の次の文字 : ghij