2012-02-25 14 views
1

私は時間を表示しようとしているし、しばらくの間待ってから、更新された時間を表示しています。私のコードは、しかし、それを更新することなく、同じ時間を印刷します。Cで表示される時刻を更新するにはどうすればよいですか?

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

int main(){ 
time_t timer; 
time(&timer); 
struct tm* time; 
time = localtime(&timer); 

printf("%s", asctime(time)); 
fflush(stdout); 

sleep(4); //my attempt at adjusting the time by 4 seconds 

time = localtime(&timer); // "refreshing" the time? 
printf("%s", asctime(time)); 

return(0); 

} 

と私の出力は次のとおりです:

これは私のコードは、これまでのところで、理想的

[email protected]:~/Desktop$ ./tester 
Sat Feb 25 08:09:01 2012 
Sat Feb 25 08:09:01 2012 

、私が代わりのlocaltime(&タイマー)のCTIME(&タイマー)を使用しているはずです、しかし、私は今は4秒で時間を調整しようとしています。どんな助けもありがとう。

答えて

4

localtimeは、struct timepstruct tmに変換するだけで、何時になったのかは確認できません。新しい現在の時刻、をしたいとローカル変数にあなたがその同じブロックに使用しているライブラリ関数と同じ名前を付けていない場合

ジャストスリープ後time(&timer)を呼び出します。

は( - printfため<stdio.h>、そしてsleepため<unistd.h> - そして、あなたは2つのヘッダが欠落しているあなたは、コンパイラに警告を有効にしてください。)

+0

やあ、 私は後の時間(&タイマー)を呼び出してみました私はそれをコンパイルしようとするとエラーが発生します。 tester.c:21:エラー:オブジェクト 'time'は関数ではありません – Mike

+0

ああ、私は今働いています。ありがとうございました! – Mike

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

int main(){ 
       time_t timer; 
       time(&timer); 
       struct tm* time_real;//time is function you can't use as variable 
       time_real = localtime(&timer); 
       printf("%s", asctime(time_real)); 
       sleep(4); 
       time(&timer);//update to new time 
       time_real = localtime(&timer); // convert seconds to time structure tm 
       printf("%s", asctime(time_real)); 

return(0); 
} 
+1

説明がうまくいくはずです。 – Rashad

関連する問題