C言語 文字列を整数値( long型 )に変換 - stdlib.h - [ strtol ]

2008.11.01 Saturday | by LRESULT


字列を整数値( long型 )に変換するには、strtol()を使います。


strtol
書式 long strtol( const char *s, char **ends, int base )
機能 文字列を整数値( long型 )に変換
引数 const char *s : 変換元も文字列
char **ends : 変換が不可能だった文字列を格納するポインタ
int base : 基数
0を指定すると、文字列の先頭に0x or 0Xがあると16進数として変換し、
0から始まる数値なら8進数として変換し、それ以外は10進数として変換します。
また、2〜36を指定すると、指定された n進数で変換します。
戻り値 long型に変換された値


引数の int baseは、どの進数として文字列を変換するかを指定します。





サンプルコード1
文字列である「123ABC」を、long型の「123」に変換し、
変換出来なかった文字列「ABC」を確認してみます。

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

int main(void)
{
  char *s = "123ABC";
  char *ends;
  long l;

  l = strtol( s, &ends, 0 );

  printf( "変換元の文字列:%s¥n", s );
  printf( "long型に変換された値:%d¥n", l );
  printf( "変換出来なかった文字列:%s¥n", ends );

  return 0;
}




結果
変換元の文字列:123ABC
long型に変換された値:123
変換出来なかった文字列:ABC
というように、表示されます。

strtolの第3引数に0を指定した為、文字列を10進数と判定し
123として変換されています。




サンプルコード2
次に、16進数の値がある文字列「0xFF ABC」を、long型の整数に変換してみます。

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

int main(void)
{
  char *s = "0xFF ABC";
  char *ends;
  long l;

  l = strtol( s, &ends, 0 );

  printf( "変換元の文字列:%s¥n", s );
  printf( "long型に変換された値:%d¥n", l );
  printf( "変換出来なかった文字列:%s¥n", ends );

  return 0;
}




結果
変換元の文字列:0xFF ABC
long型に変換された値:255
変換出来なかった文字列:ABC
と、いうことになります。
0xFFを16進数と判定し、整数値の 255に変換しています。

カテゴリ:C言語 stdlib.h | 14:25 | comments(0) | trackbacks(0) | -


コメントする











この記事のトラックバックURL

http://simd.jugem.jp/trackback/95

トラックバック