型変換関数

文字列を int 型に変換

atoi.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
  stdlib.h [atoi]

  書式: int atoi(const char *s)
  機能: 数字から整数型 (int 型) に変換
  引数: const char *s: 変換元の文字列を指定
  戻り値: int 型に変換された整数値
*/

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

int main(void){
  char *s = "12345";
  int i;

  i = atoi(s);

  printf("数値: %d\n", i);

  return 0;
}

atoi.c の実行結果は:

[cactus:~/code_c/refer]% ./atoi
数値: 12345

文字列を long 型に変換

atol.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
  stdlib.h [atol]

  書式: long atol(const char *s)
  機能: 数字から整数型 (long 型) に変換
  引数: const char *s: 変換元の文字列を指定
  戻り値: long 型に変換された整数値
*/

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

int main(void){
  char *s = "123456789";
  long l;

  l = atol(s);
  l++;

  printf("数値 (long 型): %li\n", l);

  return 0;
}

atol.c の実行結果は:

[cactus:~/code_c/refer]% ./atol
数値 (long 型): 123456790

文字列を double 型に変換

atof.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
  stdlib.h [atof]

  書式: double atof(const char *s)
  機能: 数字から整数型 (double 型) に変換
  引数: const char *s: 変換元の文字列を指定
  戻り値: double 型に変換された整数値
*/

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

int main(void){
  char *s = "123.12345";
  double d;

  d = atof(s);

  printf("小数値 (double 型): %.5f\n", d);

  return 0;
}

atof.c の実行結果は:

[cactus:~/code_c/refer]% ./atof
小数値 (double 型): 123.12345

文字列を long 型とその他の文字列に変換

strtod.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/*
  stdlib.h [strtod]

  書式: double strtod(const char *s, char **ends)
  機能: 文字列を浮動小数点 (double 型) に変換 
  引数: const char *s: 変換元の文字列
        char **ends: 変換が不可能だった文字列を格納するポインタ
  戻り値: double 型に変換された値
*/

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

int main(void){
  char *s = "123.12345ABC";
  char *ends;
  double d;

  d = strtod(s, &ends);

  printf("変換元の文字列: %s\n", s);
  printf("double 型に変換された値: %.5f\n", d);
  printf("変換できなかった文字列: %s\n", ends);

  return 0;
}

strtod.c の実行結果は:

[cactus:~/code_c/refer]% ./strtod
変換元の文字列: 123.12345ABC
double 型に変換された値: 123.12345
変換できなかった文字列: ABC

文字列を unsigned long 型とその他の文字列に変換

strtol.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
  stdlib.h [strtol]

  書式: long strtol(const char *s, char **ends, int base)
  機能: 文字列を整数値 (long 型) に変換 
  引数: const char *s: 変換元も文字列
        char **ends: 変換が不可能だった文字列を格納するポインタ
	int base: 基数
  戻り値: long 型に変換された値
*/

#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 型に変換された値: %li\n", l);
  printf("変換できなかった文字列: %s\n", ends);

  return 0;
}

strtol.c の実行結果は:

[cactus:~/code_c/refer]% ./strtol
変換元の文字列: 123ABC
long 型に変換された値: 123
変換できなかった文字列: ABC

strtol1.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
  stdlib.h [strtol]

  書式: long strtol(const char *s, char **ends, int base)
  機能: 文字列を整数値 (long 型) に変換 
  引数: const char *s: 変換元も文字列
        char **ends: 変換が不可能だった文字列を格納するポインタ
	int base: 基数
  戻り値: 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 型に変換された値: %li\n", l);
  printf("変換できなかった文字列: %s\n", ends);

  return 0;
}

strtol1.c の実行結果は:

[cactus:~/code_c/refer]% ./strtol1
変換元の文字列: 0xFF ABC
long 型に変換された値: 255
変換できなかった文字列:  ABC

文字列を double 型とその他の文字列に変換

strtoul.c

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
  stdlib.h [strtoul]

  書式: long strtoul(const char *s, char **ends, int base)
  機能: 文字列を整数値 (unsigned long 型) に変換 
  引数: const char *s: 変換元も文字列
        char **ends: 変換が不可能だった文字列を格納するポインタ
	int base: 基数
  戻り値: unsigned long 型に変換された値
*/

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

int main(void){
  char *s = "123456789ABCDE";
  char *ends;
  unsigned long ul;

  ul = strtoul(s, &ends, 0);

  printf("変換元の文字列: %s\n", s);
  printf("unsigned long 型に変換された値: %li\n", ul);
  printf("変換できなかった文字列: %s\n", ends);

  return 0;
}

strtoul.c の実行結果は:

[cactus:~/code_c/refer]% ./strtoul
変換元の文字列: 123456789ABCDE
unsigned long 型に変換された値: 123456789
変換できなかった文字列: ABCDE