C/C++ ポインタ入門 > 文字列関数 > atoi
Nobuhide Tsuda
Nov-2013
文字数を10進数変換:int my_atoi(const char *str)
int my_atoi(const char *str)
{
if( !isdigit(*str) ) { // str の先頭文字が数字でない場合は -1 を返す
return -1;
}
int val = 0; // 初期値を 0 に設定
while( isdigit(*str) ) { // str の指す先が数字である間
val = val * 10 + *str++ - '0'; // 値を10倍し、数字を足す
}
return val; // 値を返す
}
解説:
- まずは isdigit() で先頭文字が数字かどうかを判定します。
- isdigit() は C の標準関数です。コンパイルエラーが出る場合は #include <ctype.h> を記述してください。
- 値を保持する変数を 0 に初期化しておきます。
- あとはループを回しながら、値を10倍し、文字の数値を加えます。
- 数字文字('0' ~ '9')は文字コードが連続しているので、文字 - '0' で数値(0~9)に変換できます。
- 最後に return val; で値を返します。
前:
| 次: