:: 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)
v1 〜 vn の値を書式 f で書式化し、文字列バッファ s に格納します。 文字列バッファ s の最後には、NULL文字が付きます。
書式 f の中に指定する %s や %d などのパラメータが、v1 〜 vn の値によって置き換えられます。 パラメータは、左から順に v1 〜 vn の値に対応します。
v1 〜 vn の値を省略した場合は、書式 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+]
|
なお、桁数を超える数値を指定しても、切り捨てられることはありません。
(%4d で 12345 を指定した場合は、そのまま 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行目" になります。
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com