ホームC言語Tips集文字列 ≫ 数値を文字列に変換する

C言語Tips集 - 数値を文字列に変換する

C言語で数値を文字列に変換するには stdio.hsprintf 関数か,snprintf 関数を使用します.

#include <stdio.h>

sprintf

int sprintf(char * restrict s,
    const char * restrict format, ...);

snprintf (C99)

int snprintf(char * restrict s,
    size_t n, const char * restrict format, ...);

sprintf 関数は,format が指す書式文字列に従って,s が指す文字配列へ書き込みを行う関数です.なお,文字配列に書き込んだ文字列の後には '\0' が自動的に書き込まれます.

snprintf 関数は,C99 から規定された関数です.基本的には sprintf 関数と同じですが,書き込む文字列の最大文字数 n を指定します.(n-1番目より後の出力文字は文字配列に書き込まずに破棄されます.)

sprintf 関数,snprintf 関数ともに,format が指す書式文字列は printf 関数と同じフォーマットで指定します.変換指定子に %d や %f を指定することで,数値から文字列に変換することができます.

C言語サンプルプログラム

以下に sprintf 関数と,snprintf 関数を使用して数値を文字列に変換するサンプルプログラムを示します.

/* header files */
#include <stdio.h>
#include <stdlib.h>

/* macros */
#define N 256

/* main */
int main(void) {
    char s1[N] = {'\0'};
    char s2[N] = {'\0'};
    int i = 10000;
    double x = 200.123;

    sprintf(s1, "%d", i);
    snprintf(s2, N, "%.4f", x);

    fprintf(stdout, "s1: %s\n", s1);
    fprintf(stdout, "s2: %s\n", s2);

    return EXIT_SUCCESS;
}

実行例

サンプルプログラムの実行結果は以下のようになります.

s1: 10000
s2: 200.1230

Cプログラマの必読書

たくさんあるC言語関連の書籍の中でも特に役に立った本です.よかったら参考にしてみてください.

C実践プログラミング 第3版

C言語の実践的参考書.少々値段は張りますが初心者を脱しようとしている人は絶対に読むべきです.
文法だけでなく,コーディングスタイルやデバッグなど文字通り「実践的」なことが書かれているので非常にためになります. オライリーの本は,読みにくい本が多いのですが本書はとても読みやすくオススメです.


C言語ポインタ完全制覇 (標準プログラマーズライブラリ)

ポインタの解説書としては最高の書籍です.
この1冊でポインタを完全に理解することができます.全くの初学者が読むには敷居が高いですが,入門書を読み終えた後に読むと非常に有益です.

文字列の変換