2011-02-08 65 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

`的for(int i = 0:I = 1000;我++)`咦? – John 2011-02-08 23:01:39

+0

程序中有錯別字。如果你的條件是`i == 1000`,則for循環永遠不會執行,while循環無限運行。 – Mahesh 2011-02-08 23:02:19

回答

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

printf()格式字符串的末尾使用\r

編輯:而正如阿茲提到的,你應該fflush(stdout),因爲它是默認行緩衝。

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); 
    } 
}