2016-03-30 28 views
0

Ich baue diesen Code, der 10 Sekunden zur aktuellen Zeit hinzufügt und vergleichen Sie dann die aktualisierte Zeit mit der tatsächlichen Zeit und wenn sie übereinstimmen, gibt es eine Nachricht zum Ausdrucken. Hier ist mein Code. Kann mir jemand sagen, wo ich falsch liege? hier ist mein Code:versuchen, Zeit mit Zeichenfolge zu vergleichen vergleichen

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

Ich denke, es gibt Probleme mit String vergleichen. nicht sicher aber!

hier ist die Ausgabe:

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

Was ist das Problem, vor dem Sie stehen? Nicht, dass deine 'while (1)' Schleife niemals bricht. – Marievi

+0

Ja, ich weiß, dass es eine Pause braucht; Problem ist: Ich kann mein "Hallo" nicht drucken lassen. @Marievi –

+0

Ein weiterer Kommentar: Sie brauchen nicht die "while" -Schleife, da Sie die gleichen Strings die ganze Zeit vergleichen und sie sich nicht innerhalb der Schleife ändern (außer Sie planen etwas anderes). – Marievi

Antwort

5

Sie setzen den "tatsächlichen" Zeit-String (timeN) einmal, vor der Schleife. Sie müssen es kontinuierlich in der Schleife einstellen oder es wird sich nie ändern.