[C言語]自作関数で数値から文字列に変換!itoa関数を使わない方法

C言語
広告

C言語において、数値から文字列に変換する方法は様々あります。

その中でも、itoa関数を使わずに数値から文字列に変換する方法を学びましょう。

SPONSORLYNC

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関数を自作する方法を紹介しました。

文字列への変換は、プログラミングにおいて非常に重要な操作です。是非、自分で試してみてください。

C言語
広告
タイトルとURLをコピーしました