2

現在の日付を次の形式で印刷する必要があります。今日は水曜日から2012年9月7日です。構造体を使用する必要があることはわかっています。

 struct tm* time_info;

これはstrftime()を使用して簡単に実行できますが、strftime()を使用せず、printfステートメントを使用して構造体のメンバーを直接抽出する必要があります。正しく動作させることができないようです。手がかりはありますか?これが私の現在のコードです:

 #include <stdio.h>
 #include <sys/types.h>
 #include <time.h>
 #include <stdlib.h>

 /* localtime example */
 #include <stdio.h>
 #include <time.h>

 int main (void)
 {
 time_t t; 
 char buffer[40]; 
 struct tm* tm_info; 

 time(&t); 
 tm_info = localtime(&t);
 strftime(buffer, 40, " Today is %A - %B %e, %Y", tm_info); 
 puts(buffer); 


  return 0;
}

それ以外の

 strftime(buffer, 40, " Today is %A - %B %e, %Y", tm_info); 

私は欲しい

 printf("Today is %s, struct members info in the correct format);
4

3 に答える 3

6

struct tm には少なくともこれらのメンバーがあります

int tm_sec 秒 [0,60]。
int tm_min 分 [0,59]。
int tm_hour 時間 [0,23]。
int tm_mday 日 [1,31]。
int tm_mon 月 [0,11]。
int tm_year 1900 年からの年数。
int tm_wday 曜日 [0,6] (日曜日 =0)。
int tm_yday 通算日 [0,365]。
int tm_isdst 夏時間フラグ。

だから今、あなたは例えばすることができます

printf("Today is %d - %d %d, %d", tm_info->tm_wday, 
                                  tm_info->tm_mon,
                                  tm->tm_mday,
                                  1900 + tm_info->tm_year);

もちろん、これは月と曜日を数値として出力します。一致する英単語を取得するための簡単なルックアップ テーブルを作成するのはあなたに任せます。たとえば、インデックス 0 を「日曜日」に、インデックス 1 を「月曜日」に、などのようにマップできるように、配列を使用します。

于 2012-09-05T18:26:54.333 に答える
2

`-> 逆参照演算子を使用して、構造体の個々の要素にアクセスできます。

printf("Time is %02d:%02d:%02d\n", tm_info->tm_hour, tm_info->min, tm_info->tm_sec);

必須フィールドはすべてstruct tm ここにあります。

于 2012-09-05T18:24:12.643 に答える
0

struct tmの各メンバーを個別に渡す必要があります。

printf("Hour: %d  Min: %d  Sec: %d\n",
    tm_info->tm_hour,
    tm_info->tm_min,
    tm_info->tm_sec
);
于 2012-09-05T18:22:30.357 に答える