C言語例文集


 strtol()    文字列をlong型に変換する

ヘッダ stdlib.h
書式 long int strtol(const char *nptr, char **endp, int base);
引数 nptr … long型に変換する文字列のポインタ
endp … 変換が完了した位置を示すポインタ
base … 変換する数の基数(何進数に変換するか)
戻り値 成功:変換後の整数(long型)
失敗:0
解説 文字列nptrをlong型に変換する。文字列の中に数値として認識できない文字がある場合、その文字で読み出しを中止し、そのポインタをendpに格納する。
 baseが2以上36以下であれば、基数がbaseの値として変換される。例えば、baseの値が10であれば10進数として文字列を変換する。
 baseが0の場合は変換する文字列により基数を決定する。文字列の1文字目が0かつ2文字目が1〜7の場合は8進数で変換、文字列の1文字目が0かつ2文字目がxまたはXの場合は16進数で変換、文字列の1文字目が1〜9の場合は10進数で変換する。変換例は以下の通り。
baseが0、文字列が"011"(先頭が0)の場合 → 8進数で変換 → 9
baseが0、文字列が"0x11"(先頭が0xまたは0X)の場合 → 16進数で変換 → 17
baseが0、文字列が"11"の場合 → 10進数で変換 → 11


<サンプルプログラム>

/****************************************************************************/
#include <stdio.h>
#include <stdlib.h>

int main()
{
    // 変数定義
    long int longint_num[8];
    char *endp;
    int cnt;

    longint_num[0] = strtol("12345", &endp, 10);
    longint_num[1] = strtol("2147483647", &endp, 10);
    longint_num[2] = strtol("-1234", &endp, 10);
    longint_num[3] = strtol("0x10a", &endp, 0);
    longint_num[4] = strtol("10a", &endp, 16);
    longint_num[5] = strtol("0100", &endp, 0);
    longint_num[6] = strtol("100", &endp, 8);
    longint_num[7] = strtol(" 0", &endp, 0);

    for(cnt = 0; cnt < 8; cnt++)
    {
        printf("longint_num[%d]:%ld\n", cnt, longint_num[cnt]);
    }

    printf("\n");

    return 0;
}
/****************************************************************************/

<実行結果>



<Topページ>

Copyright(c) 2010 , cgengor
このWebページの内容を無断で複製または転載することを禁じます。
このWebページの情報を利用することにより発生したいかなる損害について著作権保有者はいっさいの責任を負いません。