2016-03-30 2 views
0

Я создаю этот код, который добавляет 10 секунд к текущему времени, а затем сравнивает обновленное время с фактическим временем и когда они совпадают, есть сообщение для печати. вот мой код. может кто-нибудь сказать мне, где я иду не так. вот мой код:пытается сравнить время, используя строку сравнения

#include <stdio.h> 
    #include <time.h> 

    int main(int argc, char **argv) 
    { 
      time_t timeNow; 
      time_t timeAct; 
      struct tm* time_info; 
      time(&timeNow); 
      time(&timeAct); 
      time_info = localtime(&timeNow); 
      char timeStr[sizeof"HH:MM:SS"]; 
      char timeN[sizeof"HH:MM:SS"]; 

      strftime(timeStr, sizeof(timeStr), "%H:%M:%S", time_info); 
      printf("Time now: %s\n", timeStr); 


      timeNow += 10; 
      time_info = localtime(&timeNow); 
      strftime(timeStr, sizeof(timeStr), "%H:%M:%S", time_info); 
      printf("New time: %s\n", timeStr); 

      time_info=localtime(&timeAct); 
      strftime(timeN, sizeof(timeN), "%H:%M:%S", time_info); 
      printf("time Actual: %s\n",timeN); 


      while(1) 
      { 
        if(strcmp(timeStr,timeN) == 0) 
        { 
          printf("hi"); 
        } 
      } 
} 

я думаю, что есть проблема с строкой сравнения. не уверен, хотя!

здесь выход:

Time now: 12:41:17 
New time: 12:41:27 
time Actual: 12:41:17 
+0

В чем проблема, с которой вы сталкиваетесь? Не то, чтобы ваш цикл while (1) 'никогда не прерывался. – Marievi

+0

да, мне нужно перерыв; проблема в том, что я не могу получить свой «привет». @Marievi –

+0

Еще один комментарий: вам не нужен цикл while, поскольку вы все время сравниваете одни и те же строки, и они не будут меняться внутри цикла (если вы не планируете что-то еще). – Marievi

ответ

5

Вы установите "фактическое" строку времени (timeN) один раз, перед циклом. Вы должны установить его непрерывно в цикле, иначе он никогда не изменится.

Смежные вопросы