fputc() — 文字の書き込み
フォーマット
#include <stdio.h>
int fputc(int c, FILE *stream);
言語レベル
ANSI
スレッド・セーフ
はい
説明
fputc() 関数は c を unsigned char に変換してから c を出力 stream の現在位置に書き込み、正しくファイル位置を進めます。 ストリームが追加モードの 1 つでオープンされている場合は、文字はストリームの最後に付け加えられます。
fputc() 関数は putc() と同じですが、常に関数呼び出しとして定義され、マクロで置き換えられることはありません。
戻り値
fputc() 関数は書き込まれる文字を戻します。EOF の戻り値はエラーを示します。
errno の値は、次のいずれかに設定されます。
- 値
- 意味
- ECONVERT
- 変換エラーが発生しました。
- ENOTWRITE
- ファイルは書き込み操作用にオープンされません。
- EPUTANDGET
- 読み取り操作の後に、許可されていない書き込み操作が発生しました。
- ERECIO
- ファイルはレコードの入出力用にオープンしています。
- ESTDERR
- stderr をオープンできません。
- ESTDOUT
- stdout をオープンできません。
- EIOERROR
- リカバリー不能な入出力エラーが発生しました。
- EIORECERR
- リカバリー可能な入出力エラーが発生しました。
fputc() 関数は、type=record でオープンされたファイルではサポートされていません。
例
次の例は buffer の内容を myfile と呼ばれるファイルに書き込みます。
注: 出力が for ステートメントの 2 番目の式内の副次作用として発生するため、このステートメント本体は NULL です。
#include <stdio.h>
#define NUM_ALPHA 26
int main(void)
{
FILE * stream;
int i;
int ch;
char buffer[NUM_ALPHA + 1] = "abcdefghijklmnopqrstuvwxyz";
if (( stream = fopen("mylib/myfile", "w"))!= NULL )
{
/* Put buffer into file */
for ( i = 0; ( i < sizeof(buffer) ) &&
((ch = fputc( buffer[i], stream)) != EOF ); ++i );
fclose( stream );
}
else
perror( "Error opening myfile" );
}