C言語の標準関数を目的別に調べることができる辞典

ホーム > C 標準関数逆引き辞典 > 文字列 > 書式化した文字列を作成する

C 標準関数逆引き辞典

:: reverse dictionary ::

文字列

※ソースファイルについて


書式化した文字列を作成する

書式化した文字列を作成するには、sprintf 関数を使います。

≪宣言≫

#include <stdio.h>
char str[256];
char pg[] = "プログラム";
int num = 123;

sprintf(str, "C%s %d行目", pg, num);

ソースファイル

str"Cプログラム 123行目" になります。


ワイド文字列の場合は swprintf 関数を使います。

≪宣言≫

#include <locale.h>
#include <stdio.h>
wchar_t str[256];
wchar_t pg[] = L"プログラム";
int num = 123;

setlocale(LC_ALL, "ja");  /* ロケールを日本語に設定 */

swprintf(str, L"C%s %d行目", pg, num);

ソースファイル

str"Cプログラム 123行目" になります。

▼ 関数

int sprintf(char *s, const char *f)
int sprintf(char *s, const char *f, v1, v2, ... , vn)
int swprintf(wchar_t *s, const wchar_t *f)
int swprintf(wchar_t *s, const wchar_t *f, v1, v2, ... , vn)

v1vn の値を書式 f で書式化し、文字列バッファ s に格納します。 文字列バッファ s の最後には、NULL文字が付きます。

書式 f の中に指定する %s%d などのパラメータが、v1vn の値によって置き換えられます。 パラメータは、左から順に v1vn の値に対応します。

v1vn の値を省略した場合は、書式 f をそのまま文字列バッファ s に格納します。

%s%d などの主なパラメータは、次のとおりです。

パラメータ 置き換わる値
%c 文字
%s 文字列
%d 10進数
%o 8進数
%x 16進数 アルファベットは小文字( a 〜 f )
%X 16進数 アルファベットは大文字( A 〜 F )
%f 小数点数 例:123.456789
%e 浮動小数点数 例:1.234568e+002
%p 指定した変数のアドレス 例:0012FF60

文字列や数値のパラメータには、桁数を指定できます。

パラメータ 置き換わる値
書式 "[値]"
%4d 4桁の10進数
空いている桁は半角スペース
12 [  12]
%04d 4桁の10進数
空いている桁は 0
123 [0123]
%.4f 小数部4桁の小数点数 1.23 [1.2300]
%.4s sprintf は4バイトの文字列
swprintf は4文字の文字列
CとC++ sprintf[CとC]
swprintf[CとC+]

なお、桁数を超える数値を指定しても、切り捨てられることはありません。
%4d12345 を指定した場合は、そのまま 12345 に置き換えられます)

●引数

s … 文字列バッファ
f … 書式
v1 〜 vn … 書式化する値

●戻り値

sprintf は格納したバイト数、swprintf は格納した文字数
(最後の NULL文字は含みません)

●補足

使用できるパラメータは printf 関数、wprintf 関数と同じです。
printf 関数、wprintf 関数 … 文字列や数値を書式付きで画面に出力する

▼ 参考

書式化した文字列を追加することもできます。

char str[256];
char pg[] = "プログラム";
int na = 12, nb = 34, nc = 56;
int len;

len = sprintf(str, "C%s %d行目", pg, na);
len += sprintf(str + len, ", %d行目", nb);
len += sprintf(str + len, ", %d行目", nc);

ソースファイル

str"Cプログラム 12行目, 34行目, 56行目" になります。


ワイド文字列も同じです。

wchar_t str[256];
wchar_t pg[] = L"プログラム";
int na = 12, nb = 34, nc = 56;
int len;

setlocale(LC_ALL, "ja");  /* ロケールを日本語に設定 */

len = swprintf(str, L"C%s %d行目", pg, na);
len += swprintf(str + len, L", %d行目", nb);
len += swprintf(str + len, L", %d行目", nc);

ソースファイル

str"Cプログラム 12行目, 34行目, 56行目" になります。

注目キーワード ベスト5

  1. セキュリティ
  2. ホスティング
  3. レンタルサーバ
  4. ファイル復旧
  5. ハードディスク修復

文字列 - string -


ホーム > C 標準関数逆引き辞典 > 文字列 > 書式化した文字列を作成する

Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com