fputc() — 文字の書き込み

フォーマット

#include <stdio.h>
int fputc(int c, FILE *stream);

言語レベル

ANSI

スレッド・セーフ

はい

説明

fputc() 関数は cunsigned 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" );
 
}