#include <stdio.h>
int fprintf(FILE *stream, const char *format [,argument list])
stream : FILE 構造体へのポインタ
format : フォーマット
argument : 引数(出力したい変数等のリスト)
format は,
1)一般の文字:そのまま出力されます
2)エスケープシーケンス:その記号によって,対応する処置が執られます
\a : ビープ音(警告)
\b : バックスペース
\f : フォームフィード(ページ替え)
\n : 改行
\r : 復帰
\t : 水平タブ
\v : 垂直タブ
\' : 単一引用符
\" : 2 重引用符
\\ : 円マーク
\? : 疑問符
\ooo : 8 進表記の ASCII 文字
\xhhh : 16 進表記の ASCII 文字
3)フォーマット指定:引数をどのように出力するかを決めます
の 3 つから構成されます.
フォーマット指定は,常に % 記号で始まり,一般的には次のような形をして
います.
%[flags][width][.precision][{h|l|ll|L}]type
例えば,
%+10.3lf
は,浮動小数点数を出力するため(最後の f がそれを意味している)のフォ
ーマット指定であり,+ か - の符号を必ず付け( + ),出力幅は 10 桁
( 10 ),小数点以下は 3 桁まで表示( .3 )し,この数が倍精度である( l )
ことを意味しています.
type は必須の項目で,出力する引数が文字か,数値か等を決定します.
以下に示すような種類があります.
文字 データ型 出力フォーマット
d int 符号付き 10 進数
i int 符号付き 10 進数
u int 符号無し 10 進数
o int 符号無し 8 進数
x int 符号無し 16 進数( abcdef )
X int 符号無し 16 進数( ABCDEF )
f double [-]ddd.ddd.全体の出力文字数は width,また小数点以
下の桁数は .precision で決まります.
e double [-]d.dddde[+|-]ddd.全体の出力文字数は width (符号
や e[+|-]ddd の項も含まれることに注意してください),
また小数点以下の桁数は .precision で決まります.
E double [-]d.ddddE[+|-]ddd
g double f または e フォーマットの内,短い方で出力( g )
G double f または E フォーマットの内,短い方で出力( G )
c int 1 個の文字
s 文字列 最初の NULL 文字( '\0' )まで,または,.precision で指
定された範囲まで表示されます.
flags は,出力位置の調整等を行い,以下の種類があります.
- 指定された出力幅内で結果を左詰めにします(デフォルトは右詰め
です)
+ 出力が符号付きの場合は,値の前に必ず + か - を付けます(デフォ
ルトは,負の場合だけ - 記号を付けます)
0 左側の空白に 0 が埋められます.
width は,出力する最小限の文字数を指定します.
precision は出力するデータ型によって以下のような意味を持って
います.
diuoxX 表示される最小限の桁数を表します.出力文字数がこの桁数より
少ない場合は,左側に 0 が充填されます.
eEf 小数点以下の桁数を指定します.
gG 出力される最大限の有効桁数を指定します
s 出力される最大限の文字数を指定します.この値を超えた文字は
出力されません.
h,l, ll,L は,以下のように,引数のサイズを規定します
h 引数が,short int であることを示します
l 引数が,long int であることを示します
ll 引数が,long long int であることを示します
L 引数が,long double であることを示します
#include <stdio.h>
int main()
{
char ch = 'h';
char *string = "computer";
int i1 = 123;
int i2 = -10;
long l1 = -20;
int hex = 0x10;
int oct = 010;
int dec = 10;
double fp = 25.736;
FILE *stream;
/*
ファイルのオープン
*/
stream = fopen("data", "w");
/*
整数
*/
fprintf(stream, "整数\n");
fprintf(stream, "%5d %+5d %5d %+5d\n", i1, i1, i2, i2);
fprintf(stream, "%10ld %010ld %10lu %lo %lx\n", l1, l1, l1, l1, l1);
/*
文字
*/
fprintf(stream, "文字\n");
fprintf(stream, "%10c%5c\n", ch, ch);
/*
文字列
*/
fprintf(stream, "文字列\n");
fprintf(stream, "%25s\n%25.4s\n", string, string);
/*
実数
*/
fprintf(stream, "実数\n");
fprintf(stream, "%15f %15.2f %e %E\n", fp, fp, fp, fp);
/*
16進,8進,10進
*/
fprintf(stream,"16進,8進,10進\n");
fprintf(stream,"%10i %10i %10i\n", hex, oct, dec);
return 0;
}
整数
123 +123 -10 -10
-20 -000000020 4294967276 37777777754 ffffffec
文字
h h
文字列
computer
comp
実数
25.736000 25.74 2.573600e+01 2.573600E+01
16進,8進,10進
16 8 10
| 菅沼ホーム | 本文目次 | 演習問題解答例 | 付録目次 | 索引 |