2016-09-15 17 views
-2

構造体に日付と時刻があります。C:互換性のないポインタから整数への変換

struct datetime{ 
int hour; 
etc...} 

正しい時間を自分の構造化時間に割り当てようとすると、エラーが発生します。

struct tm tm_struct = *localtime(time(NULL)); 

dt->hour = tm_struct->tm_hour; 

まず私はその後、私はtm_struct.tm_hour代わりの->の使用に関するエラーを取得し、最初の行に互換性のないポインタ変換エラーが発生します。

任意の助けいただければ幸い:)

+4

' - >'はポインタでのみ使用できます。あなたの 'tm_struct'はポインタではありません。 – AnT

+0

'dt->時間= tm_struct-> tm_hour;' - > 'dt->時間= tm_struct.tm_hour;' – chux

+1

私は努力を示していないので、この質問をオフトピックとして閉じるよう投票しています。そこには豊富なリソースがあります。 – gsamaras

答えて

0

localtimeは、その引数としてtime_tからポインタを期待しています。代わりに、time_t値自体を渡しています。これは最初の問題の根です。通常、このために、あなたのオリジナルのワンライナーを使用してからあなたを防ぐtime

time_t t = time(NULL); 
struct tm tm_struct = *localtime(&t); 

の結果を保持するための中間という名前time_tオブジェクトを導入する必要があります。

しかし、あなたはまだワンライナー

struct tm tm_struct = *localtime(&(time_t) { time(NULL) }); 

あなたがそう望むかのようにそれを表現することができます複合リテラルを使用して

+0

賞賛、新しい何かを学んだ! – Rodbjartson

関連する問題