C言語において、数値から文字列に変換する方法は様々あります。
その中でも、itoa関数を使わずに数値から文字列に変換する方法を学びましょう。
sprintf関数で文字列に変換する
sprintf関数は、指定したフォーマットに従って文字列に変換します。
これを使って数値から文字列に変換することができます。
#include <stdio.h>
int main() {
int num = 12345;
char str[20];
sprintf(str, "%d", num);
printf("変換後の文字列: %s\n", str);
return 0;
}
上記のプログラムでは、sprintf関数を使用して整数値numを文字列strに変換しています。
%dは整数を文字列に変換するフォーマット指定子です。
自作itoa関数で数値から文字列に変換する
数値から文字列に変換する際には、数値を10で割りながら各桁の文字コードに変換する方法もあります。
#include <stdio.h>
void reverse(char s[]) {
int i, j;
char temp;
for (i = 0, j = strlen(s) - 1; i < j; i++, j--) {
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
void itoa(int n, char s[]) {
int i, sign;
if ((sign = n) < 0) /* 符号を記憶 */
n = -n; /* n を正の数にする */
i = 0;
do { /* 数値を文字に変換 */
s[i++] = n % 10 + '0'; /* 次の桁 */
} while ((n /= 10) > 0); /* n を削る */
if (sign < 0)
s[i++] = '-';
s[i] = '#include <stdio.h>
void reverse(char s[]) {
int i, j;
char temp;
for (i = 0, j = strlen(s) - 1; i < j; i++, j--) {
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
void itoa(int n, char s[]) {
int i, sign;
if ((sign = n) < 0) /* 符号を記憶 */
n = -n; /* n を正の数にする */
i = 0;
do { /* 数値を文字に変換 */
s[i++] = n % 10 + '0'; /* 次の桁 */
} while ((n /= 10) > 0); /* n を削る */
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
int main() {
int num = 12345;
char str[20];
itoa(num, str);
printf("変換後の文字列: %s\n", str);
return 0;
}
';
reverse(s);
}
int main() {
int num = 12345;
char str[20];
itoa(num, str);
printf("変換後の文字列: %s\n", str);
return 0;
}
上記のプログラムでは、itoa関数を自作しています。
この関数では、与えられた整数を10で割りながら各桁の文字コードに変換しています。
[C言語]自作関数で文字列から数値に変換!atoi関数を使わない方法
文字列から数値に変換する方法は、プログラミングでよく使われる操作です。C言語には、標準ライブラリにatoi関数が用意されていますが、これを使わずに文字列から数値に変換する方法もあります。
広告
まとめ
この記事では、C言語で数値から文字列に変換する方法について解説しました。
sprintf関数を使用する方法や、itoa関数を自作する方法を紹介しました。
文字列への変換は、プログラミングにおいて非常に重要な操作です。是非、自分で試してみてください。