先回までは、ファイルからの読み取りを行った。
今回は、ファイルへの書き込みを行ってみよう。
標準出力ストリームへの出力を行うprintf関数と同様の処理を、任意のストリームに対して行うのが、
fprintf関数である。
それでは、現在(プログラム実行時)の日付と時間を書き込むプログラムをご紹介しよう。
なお、本プログラムは、
Windows 11 Home(23H2)上で、 Visual Studio Code(1.92.2)を使用して作成し、gcc (Ubuntu 11.3.0-1ubuntu1~22.04.1) 11.3.0で コンパイルしている。
//プログラムを実行した日付・時間を書き出すプログラム
#include <time.h>
#include <stdio.h>
int main(void) {
FILE *fp;
if((fp = fopen("dt_dat.txt","w")) == NULL)
printf("ファイルをオープンできません\n");
else {
time_t current = time(NULL);
struct tm *timer = localtime(¤t);
printf("現在の日付・時間を書き出しました\n");
fprintf(fp,"%d %d %d %d %d %d\n",
timer->tm_year + 1900,timer->tm_mon +1 , timer->tm_mday,
timer->tm_hour,timer->tm_min,timer->tm_sec);
fclose(fp);
}
return 0;
}
書き出し前のファイルの内容
Nothing will work unless you do.
実行結果
現在の日付・時間を書き出しました
書き出し後のファイルの内容
2024 8 26 20 34 5
このように「西暦年/月/日/時/分/秒」の6個の整数値を空白で区切った上で10進数で書き込んでいる。
なお、本プログラムは、ファイルを書き込みモード“w”でオープンしている。
書き込みモードでは、オープンするファイルが存在すると、その中身が消去される。
そのため、ファイル”dt_dat.txt”には、本プログラムで書き込む内容だけが保存される。
(参考)新・明解C言語 入門編 第2版 柴田 望洋(著)
コメント