localtime_s()と構造と使用asctime_sで遭遇ポインタの問題

書き込みデータ構造は、取得時の機能を使用する必要があるとき今日、この関数のパラメータ振込手数料は、私は長い時間を待って、最終的には構造体ポインタ上の問題を発見しました。

構造体(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;
}

------------------------ --------波に豪華な分割線

メインINT(ボイド){
 今のtime_t;
 CHAR S [32];
 構造体TimeInfo(TM); //本明細書で上記に定義された構造に直接ではなく、ポインタは異なる、システムの初期化がデフォルト設定されます
 タイム(&今);
 (今&TimeInfo、&)localtime_s; //はTimeInfoが値文字に追加する必要がありカッコ
 asctime_s(S&timeinfo); // これは、値の文字に追加される
 のprintf( "現在の日付:%s"は、S );
 戻り0;
}

おすすめ

転載: www.cnblogs.com/ArnoldSchwarzenegger/p/11908229.html