2011-02-08 8 views
0
int main() 
{ 
    time_t ltime; 
    time(&ltime); 
    tm * pTm = localtime(&ltime); 
    while(true) 
    { 
     for(int i=0;i<1000;i++) 
     { 
      if(i==999) 
      { 
       printf("Program time is: %02d:%02d:%02d \r", pTm->tm_hour, pTm->tm_min, pTm->tm_sec); 
       i=0; 
      } 
     } 

    } 

} 

しかし、それはループしていません!!同じ行の時間を変更する方法

+0

'については、(iは0 = int型:I = 1000;私は++)'え? – John

+0

プログラムにはタイプミスがあります。条件が 'i == 1000'の場合、forループは実行されず、whileループは無限に実行されます。 – Mahesh

+1

それは 'for'のコロンとは何ですか? – John

答えて

1

値を変更したい場合は、各繰り返しをpTmに更新する必要があります。

while(true) 
{ 
    // get pTm again here. 
    sprintf(buf, "Program time is: %02d:%02d:%02d\n", pTm->tm_hour, pTm->tm_min, pTm->tm_sec); 
} 
3

\rprintf()形式文字列の末尾に使用します。

編集:そして、aazが述べたように、デフォルトではラインバッファーであるため、fflush(stdout)にする必要があります。

+2

'fflush(stdout)'を忘れないでください。 – aaz

0
int main() { 
    while(true) { 
    time_t now = time(0); 
    tm *t = localtime(&now); 
    printf("Program time is: %02d:%02d:%02d \r", t->tm_hour, t->tm_min, t->tm_sec); 
    fflush(stdout); 
    sleep(1); 
    } 
}  
関連する問題