文字列から数値に変換する方法は、プログラミングでよく使われる操作です。
C言語には、標準ライブラリにatoi関数が用意されていますが、これを使わずに文字列から数値に変換する方法もあります。
自作atoi関数で文字列から数値に変換する
自力で文字列から数値に変換する方法は、各桁の文字コードを利用して数値に変換します。
#include <stdio.h>
int string_to_int(const char *str) {
int result = 0;
int sign = 1;
int i = 0;
// 符号をチェック
if (str[0] == '-') {
sign = -1;
i = 1; // 符号の次の位置から開始
}
// 数値に変換
while (str[i] != '#include <stdio.h>
int string_to_int(const char *str) {
int result = 0;
int sign = 1;
int i = 0;
// 符号をチェック
if (str[0] == '-') {
sign = -1;
i = 1; // 符号の次の位置から開始
}
// 数値に変換
while (str[i] != '\0') {
result = result * 10 + (str[i] - '0');
i++;
}
return sign * result;
}
int main() {
char str[] = "12345";
int num = string_to_int(str);
printf("変換後の数値: %d\n", num);
return 0;
}
') {
result = result * 10 + (str[i] - '0');
i++;
}
return sign * result;
}
int main() {
char str[] = "12345";
int num = string_to_int(str);
printf("変換後の数値: %d\n", num);
return 0;
}
このプログラムでは、与えられた文字列を数値に変換しています。
string_to_int関数は、文字列を走査して数値に変換します。
ポインタを利用して文字列に変換する
ポインタを使って文字列を数値に変換する方法もあります。
#include <stdio.h>
int string_to_int(const char *str) {
int result = 0;
int sign = 1;
// 符号をチェック
if (*str == '-') {
sign = -1;
str++; // 符号の次の位置から開始
}
// 数値に変換
while (*str != '#include <stdio.h>
int string_to_int(const char *str) {
int result = 0;
int sign = 1;
// 符号をチェック
if (*str == '-') {
sign = -1;
str++; // 符号の次の位置から開始
}
// 数値に変換
while (*str != '\0') {
result = result * 10 + (*str - '0');
str++;
}
return sign * result;
}
int main() {
char str[] = "12345";
int num = string_to_int(str);
printf("変換後の数値: %d\n", num);
return 0;
}
') {
result = result * 10 + (*str - '0');
str++;
}
return sign * result;
}
int main() {
char str[] = "12345";
int num = string_to_int(str);
printf("変換後の数値: %d\n", num);
return 0;
}
このプログラムでは、ポインタを利用して文字列を走査し、数値に変換しています。
[C言語]自作関数で数値から文字列に変換!itoa関数を使わない方法
C言語において、数値から文字列に変換する方法は様々あります。その中でも、itoa関数を使わずに数値から文字列に変換する方法を学びましょう。
広告
まとめ
この記事では、C言語でatoi関数を使わずに文字列から数値に変換する方法を紹介しました。
自力で変換する方法やポインタを利用する方法を示しました。
文字列から数値に変換する際は、これらの方法を活用してください。