🌊
C言語 char型配列の型変換についてメモ
atoiとstrtolについて学んだ。
atoi(ASCII to Integer)は、C言語で文字列(char 型の配列)を整数(int 型)に変換するための標準ライブラリ関数
strtolも大体同じ。"string to long"の略。strtolは基数(進数)を指定でき、エラー検出や変換できなかった部分の処理を行うことができます。
atoi・・・・int型に変更
#include <stdio.h>
#include <stdlib.h> // for atoi
int main(int argc, char **argv)
{
char numString[] = "100"; // 数値の文字列
int num; // numStringの数値を入れる変数
// numStringを整数値に変換し、numに代入
num = atoi(numString);
printf("%d\n", num); // numの値を表示
return 0;
}
strtol・・・・long型に変更 ※atoiと書き方が若干違うのも注意
#include <stdio.h>
#include <stdlib.h> // for strtol
int main(int argc, char **argv) {
char numString[] = "100"; // 数値の文字列
long longNum;
int num;
// strtolを使って文字列を整数に変換
longNum = strtol(numString, NULL, 10);
// 必要に応じて型をキャスト
num = (int)longNum; // longからintにキャスト
printf("%d\n", num); // numの値を表示
return 0;
}
NULL: 残りの文字列部分を無視するために NULL を指定しています。もし後ろに変換できない文字があっても、このポインタは使用しません。
※char numString[] = "100abc";の時は longNum = strtol(numString, NULL, 10);で「100」となる
10: 基数を 10(十進法)として指定しています。これにより、文字列が十進法として解釈されます。
Discussion