HIR-NET Home
運営者
オンラインソフト
運営者著書
CG
HIR-NETリンク集
C言語辞典
fprintf関数
fprintf function
語源
file print format(ファイル書式印字)
分類
C/C++標準ライブラリ/関数/入出力関数/出力関数/書式出力関数
名称
ファイル書式出力関数(file format output function)
対義
fscanf関数
同等
fwprintf関数
類似
vfprintf関数
関連
printf関数, sprintf関数
解説
fprintf関数は、数値を書式変換しファイルに書き出す関数です。出力書式文字列 *format… の制御のもとに続く実引数を変換し、ストリーム *stream に出力します。stdout の代わりに *stream に出力する printf関数と等価です。
関数原型宣言ヘッダ
<stdio.h>
関数原型宣言例
0以上:転送バイト数
負 :エラー 出力ストリーム
↑ ↓
int fprintf(FILE *stream,
const char *format,...);
↑ ↑
出力書式文字列 可変個引数
関数返却値
①転送されたバイト数を返します。
②出力エラーが発生した場合は負の値を返します。
注意1
書式に対し十分な実引数がない場合の動作は未定義です。実引数が残っている間に書式が尽きてしまう場合は余分の実引数は通常の評価はされるが出力には関係しません。
注意2
変換によって生成される最大の文字数の最低値は509バイト以上です。
落とし穴1
fputs関数を fprintf関数に置き換えるのは避けるべきです。なぜなら fputs関数の文字列は無変換で出力されますが、fprintf関数の書式文字列は % が特別な意味を持つからです。これは puts関数を printf関数に置き換えた場合も同様ですが、fputs関数の場合は文字列が、文字列リテラルではない場合が多く、バグに気付くのが遅れます。次の 3つの違いに注意してください。
fputs("%%",sput); …… %を2つ出力
fprintf(sput,"%%"); …… %を1つ出力
fprintf(sput,"%s","%%"); …… %を2つ出力
関数定義例
// fprintf.c
#include <stdio.h> // FILE,vfprintf
#include <stdarg.h> // va_list,va_start,
// va_end
int fprintf( // ファイル書式出力関数
// File print Format
// 0以上:転送バイト数
// 負:失敗
FILE *stream, // 出力ストリーム
const char *format, // 出力書式文字列
...) // 可変個引数
{
int r;
va_list args; // 作業用変数の定義
va_start(args,format); // 初期化
r=vfprintf(stream,format,args);
va_end(args); // 終了
return r;
} // fprintf
書式に従ってファイルに出力
// fprintf1.c
#include <stdio.h> // FILE,fopen,fprintf
#include <stdlib.h> // EXIT_SUCCESS
int main(void)
{
FILE *sput=fopen("ファイル名","w");
int i,j=0;
for(i=0;i<10;i++)
{
fprintf(sput,"%d:%d\n",i,j);
j+=i;
} // for
return EXIT_SUCCESS;
} // main
実行結果
>>fprintf1⏎
>>type ファイル名⏎ …… 書き出されたファイル
0:0 の内容を調べる
1:0
2:1
3:3
4:6
5:10
6:15
7:21
8:28
9:36
>>■
HIR-NET Home
運営者
オンラインソフト
運営者著書
CG
HIR-NETリンク集
◆リンクは、ご自由にお張りください。
Copyright © 1988-2017 Hirabayashi Masahide プライバシーポリシー