「文字型データ」

文字から数値への変換

入力した数字(文字の一種)を数値に変換したい場合があるが、 C言語では、例えば以下のようにすることで、数字を整数の値に変換することが出来る。
int v = '8' - '0';    /* 数字(文字)'8'が整数値8になる */
広く使用されている文字コードであるASCIIコードでは、数字('0'〜'9')は ひとつづきになっている。 これを利用して、数字('0'(文字コード48)〜'9'(文字コード57))から'0'(文字 コード48)を引くことで、数字を0〜9の整数の値とすることが出来る。

以下のサンプルプログラムは入力した文字が数字だった 場合に整数の値に変換するプログラムである。

#include <stdio.h>

int
main(void)
{
    int v = 0;
    int c;

    printf("input number=");

    while ((c = getchar()) != EOF) {               /* 1文字入力 (EOFとの比較で入力の終了を検出) */
	if (c >= '0' && c <= '9')                  /* 入力文字が数字('0'〜'9')の場合 */
	    v = v*10 + (c - '0');                  /* 現在の桁の値を求め加算 */
	else
	    break;                                 /* 数字でない場合はループを終了 */
    }

    printf("v=%d\n", v);                           /* 読み取った整数値を表示 */

    return 0;
}
上記のサンプルプログラムを実行すると以下の出力結果となる。 (斜字体部分 はユーザの入力)
input number=124
v=124


文責:大津