10億回目の質問で申し訳ありませんが、実装に何が必要かわかりません。
fmttime.h と fmttime.cc (実装ファイル) を含むモジュールの一部である fmttimetest.cc (main を含む) という名前のテスト ファイルがあります。
fmttime.ccにはこの機能があります
28 ExpandedTime* localTime(struct timeval* tv, ExpandedTime* etime)
29 {
30 tzset(); // Corrects timezone
31
32 int epochT = (tv->tv_sec) - timezone; // Epoch seconds with
33 int epochUT = tv->tv_usec; // Timezone correction
34
35 int seconds = epochT % 60;
36 epochT /= 60;
37 etime->et_sec = seconds;
38 etime->et_usec = epochUT;
39
40 int minutes = epochT % 60;
41 epochT /= 60;
42 etime->et_min = minutes;
43
44 int hours = (epochT % 24) + daylight; // Hours with DST correction
45 epochT /= 24;
46 etime->et_hour = hours;
47
48
49 printf("%d,%d,%d\n", seconds, minutes, hours);
50 printf("%d\n", epochUT);
51 printf("%d\n", timezone);
52 printf("%d\n", daylight);
53 return etime;
54
55 }
56
57 char* formatTime(struct timeval* tv, char* buf, size_t len)
58 {
59
60 struct ExpandedTime etime2;
61 localTime(tv, &etime2);
62 snprintf();
63 }
*構造展開時間を含むコードの先頭行はカットオフされていますが、それらが適切に実装されていることを保証します
ここで、メインのテスト ファイル fmttimetest.cc で formatTime 関数を呼び出します。ただし、バッファと size_t len がどのように相互作用すると想定されているかについて混乱しています。size_t len が何であるかはある程度知っています...いわばオブジェクトのサイズを示します。したがって、メインのtest.ccにはこれがあります
6 #include <curses.h>
7 #include <sys/time.h>
8 #include <time.h>
9 #include "fmttime.h"
10
11 struct timeval tv;
12
13 int main()
14 {
15 char buf[] = {"%d"};
16 size_t len;
17 gettimeofday(&tv, NULL);
18 formatTime(&tv, buf, len);
19 }
ここが混乱しているところです。このバッファを渡す必要があるため、実装プログラムはエポック時間をこのバッファに人間が読める形式 (日、時、分、秒など) で書き込むことができます。私はこれをどのように行うかについて迷っています。与えられた関数プロトタイプをそのまま変更することはできず、そのまま使用することが期待されています......
また、渡されたバッファに時間を出力するために使用するコンテキストで snprintf() を使用する方法もわかりません....
これを読んでくれた人たちにもう一度感謝します。