時刻の値を直接バイナリファイルに読み書きする場合どのようなコードを書けばよろしいのでしょうか?
#include<stdio.h>
#include<time.h>
int main(void)
{
time_t current = time(NULL);
struct tm *timer = localtime(¤t);
FILE *fp;
if((fp = fopen("wawawa.c", "wb")) == NULL){
printf("ファイルが開けませんでした。\n");
}
else{
fwrite(timer, sizeof(struct tm), 1, fp);
fclose(fp);
}
if((fp = fopen("wawawa.c", "rb")) == NULL){
printf("ファイルを開くことができませんでした。\n");
}
else{
fread(timer, sizeof(struct tm), 1, fp);
fclose(fp);
}
return 0;
}
これだと、struct tm構造体のメンバが参照されていないと思い、
int date[6];
date[0] = timer->tm_year+1900;
date[1] = timer->tm_mon+1;
date[2] = timer->tm_mday;
date[3] = timer->tm_hour;
date[4] = timer->tm_min;
date[5] = timer->tm_sec;
を付け加え、fwrite関数、fread関数もともに、(&date, sizeof(int), 6, fp)に修正したのですが、wawawa.cに表示されるのは「゚ #ク↑」のような単語の連なりです。
どのようにすれば、解消できるでしょうか?ご教示お願いします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
時刻の値をバイナリファイルに書いて、どのように使いたいの?
それをテキストファイルとして開いて読めるようにしたいなら、文字列に変換して書き込む必要がある。
それを別のプログラムでバイナリファイルとして読み込んで再生できるようにするなら、tm構造体は複雑になるだけなのでtime_tの方を64ビット整数として書き込んでおけば良い。その場合はファイルをテキストエディタで開いても当然に読めないけど。
# time_tの中身は通常は32ビットないし64ビットの整数なんで安全のため大きい方にしておく
互換性とか真面目に考えるならバイトオーダーの変換とか色々と考える必要も多いので、文字列に変換してテキストで保存の方が楽そうだけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数ファイルの同時読み込みの...
-
c言語でのfscanfについて
-
fopenでファイル名に、変数を使...
-
'strcpy': 識別子が見つかりません
-
ADボードのデータの遅れについて
-
固定長ファイルの書き込み方法(...
-
【C言語】ファイルを読み込んで...
-
テキストファイル内に対して, ...
-
fread()エラー
-
C言語でクロマキー合成をする方法
-
fgets関数の利用 c言語
-
fscanfで格納された変数がおか...
-
Winsockの通信処理にてファイル...
-
ファイルに行番号を追加
-
自己相関関数を求めるプログラ...
-
ガンマ変換 C言語でプログラ...
-
lockfについて
-
a*(1-exp(-bx))+cの近似の方法
-
C言語 共用体の構造体の引数設定
-
エラーがわかりません、、
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語でのfscanfについて
-
C言語でファイル読み書きを早く...
-
fopenでファイル名に、変数を使...
-
複数ファイルの同時読み込みの...
-
fgets( ) の返り値は何?
-
テキストファイル内に対して, ...
-
ファイルへの書込み処理が異常...
-
C言語にてXMLファイルから任意...
-
ファイル出力で改行を入れたい!
-
C言語でセグメンテーションエ...
-
エラーがわかりません、、
-
ガンマ変換 C言語でプログラ...
-
VisualStudioでのファイルの入...
-
同時にファイル読み込み 書き込み
-
自己相関関数を求めるプログラ...
-
c言語 ファイルから数字を読み...
-
大量の入力ファイルを扱うとき...
-
ファイルが読み込めない・・・
-
【C言語】ファイルを読み込んで...
-
構造体のメンバにファイルポイ...
おすすめ情報