入力した数字(文字の一種)を数値に変換したい場合があるが、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