• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:時刻取得について)

C言語における時刻取得の正しい実装方法とは?

このQ&Aのポイント
  • C言語において時刻取得を正しく実装する方法を説明します。
  • プログラムを複数回実行しても前回の時刻が正しく表示されるようにするにはどうすれば良いか解説します。
  • ファイルを書き込む際に使うプログラムのコードも紹介します。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

出力ファイルにあるデータは 増えても構わないのであれば get関数の fscanfを ループして最後まで読み込んでしまえばいいでしょう do { fsacnf(fp, "%d %d %d", &h, &m, &s); } while ( !feof(fp) ); 最後の行を読み込んで もう一度読み込もうした場合fscanfは失敗し 次の whileでループを終了します 出力ファイルに 常にデータが2行なら 出力する前に最後行(2行目)のデータを読み出して 2行とも出力しなおすといった具合になるでしょう

その他の回答 (2)

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

同じような話が参考URLで持ち上がっています。 参考になるかもしれません。

参考URL:
http://www2.realint.com/cgi-bin/tarticles.cgi?pointc+30405
  • qqtester
  • ベストアンサー率66% (10/15)
回答No.2

fopen(data_file,"a") "a"ではファイルdata_fileの最終行の後に追加書き込みをしているので、 void get(void)で1行目だけを読み込んでいるのを < ここが問題 最終行から読み込むように変更する必要があります。 なのでvoid get(void)の fscanf(fp, "%d %d %d", &h, &m, &s); を細かい処理は省略し大まかにはこんな感じに変更します。 char buffer[100]; while(fgets(buffer,100,fp) != NULL){} /* 最終行をさがす */ sscanf(buffer, "%d %d %d", &h, &m, &s); fopen(data_file,"w")で成功しているのは、既存のファイルに常に同じ名前のファイルを上書きしているので、1行目=最終行となっているためです。

関連するQ&A