書き込みデータ構造は、取得時の機能を使用する必要があるとき今日、この関数のパラメータ振込手数料は、私は長い時間を待って、最終的には構造体ポインタ上の問題を発見しました。
構造体(TM){ int型のtm_sec ; / * 秒、範囲は0〜59から * / 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。 * /
int型tm_yday ; / * 今年の日、0から365までの範囲* / int型tm_isdstがし; / * サマータイム * / } ; //これは、TMの構造であり、
/ *以下は、ポインタの構造体定義、直接構造の別の定義であり、両者を比較します。* /
#include <TIME.H>
する#include <stdio.hに>
する#include <STDLIB.H>
INTメイン(ボイド){
今のtime_t;
CHAR S [32];
構造体TimeInfo =(TM)*(*(TM))はmalloc(はsizeof((TM) )); / *構造体ポインタのtimeinfoが、彼はダイナミックなスペース、与えられています初期化しなければならない、それは動的にスペースを割り当てなければならないか(初期化されていないメモリ(timeinfo)を使用して、エラーになります重要なポイントである* /
時間(&今); //時間()関数は、これは1970年1月、これまで00:00:00 1日(UTC)、秒数を開始正の整数Tの正の整数アドレスを置くことです。ここに場所があります今に
(timeinfoを、&今)localtime_s; / * 秒数を使用して機能今ローカル時刻tmを節約する構造、および構造TM TimeInfoに格納されたアドレスに変換LOCALTIME
この関数でTimeInfoポインタ* /
/ * Sは、変換時に格納された以前に文字列メモリアクセス機能いるasctime tm構造体のために定義された文字列の配列である* /; asctime_s(S、TimeInfo)
」(のprintf現在の日付があります。%S」、S);
戻り0;
}
------------------------ --------波に豪華な分割線
今のtime_t;
CHAR S [32];
構造体TimeInfo(TM); //本明細書で上記に定義された構造に直接ではなく、ポインタは異なる、システムの初期化がデフォルト設定されます
(今&TimeInfo、&)localtime_s; //はTimeInfoが値文字に追加する必要がありカッコ
asctime_s(S&timeinfo); // これは、値の文字に追加される
のprintf( "現在の日付:%s"は、S );
戻り0;
}