fprintf関数 - フォーマットした文字列を出力先を指定して出力

fprintf関数は、フォーマットした文字列を出力先を指定して出力できます。printf関数は、標準出力に出力しますが、出力先を指定できるのが、fprintf関数です。stdio.hヘッダを読み込むと使えます。

#include <stdio.h>
int fprintf(FILE *fp, const char *format, ...);

標準出力に出力する

fprintf関数を使って、標準出力に出力してみましょう。printf関数と同じことをします。stdoutは、標準出力ストリームを意味するFILE構造体へのポインタです。

#include <stdio.h>

int main(void) {
  const char* message = "Hello";
  fprintf(stdout, "%s\n", message);
}

出力結果です。

Hello

標準エラー出力に出力する

fprintf関数を使って、標準エラー出力に出力してみましょう。stderrは、標準エラーストリームを意味するFILE構造体へのポインタです。

#include <stdio.h>

int main(void) {
  const char* message = "Hello";
  fprintf(stderr, "%s\n", message);
}

出力結果です。エラー出力に出力されます。

Hello

ファイルに出力する

fprintf関数を使って、ファイルに出力してみましょう。fopen関数でファイルを開いて、ファイルに書き込んでみましょう。開いたファイルはfclose関数で閉じています。

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  
  // 書き込み用にファイルを開く
  const char* out_file = "output.txt";
  FILE* out_fp = fopen(out_file, "w");
  if (out_fp == NULL) {
    fprintf(stderr, "Can't open file %s\n", out_file);
    exit(1);
  }
  
  // fprintf関数でファイルに書き込む
  const char* message = "Hello";
  fprintf(out_fp, "%s\n", message);
  
  // ファイルを閉じる
  fclose(out_fp);
}

output.txtを開いてみましょう。以下の内容が出力されています。

Hello

関連情報