🌊

C言語 char型配列の型変換についてメモ

2025/03/12に公開

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