広く使用されている文字コードであるASCIIコードでは、数字('0'〜'9')は ひとつづきになっている。 これを利用して、数字('0'(文字コード48)〜'9'(文字コード57))から'0'(文字 コード48)を引くことで、数字を0〜9の整数の値とすることが出来る。int v = '8' - '0'; /* 数字(文字)'8'が整数値8になる */
以下のサンプルプログラムは入力した文字が数字だった 場合に整数の値に変換するプログラムである。
上記のサンプルプログラムを実行すると以下の出力結果となる。 (斜字体部分 はユーザの入力)#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