[C/C++] Zeiteingabe mit Systemzeit vergleichen?

Radhad

Erfahrenes Mitglied
Hallo Turorials-Mitglieder!


Ich hab ein kleines Programm geschrieben, welches eine eingegebne Zeit mit der Systemzeit vergleichen soll, und wenn sie gleich sind soll er aus der do-while Schleife springen. Allerdings geht er nicht in meine If-Anweisung, oder überspringt sie einfach. Wie kann ich dies beheben?

Danke schonmal im vorraus.

Code:
#include <stdio.h>
#include <time.h>
#include <windows.h>

void main()
{
	char tmpbuf[128];
	char endzeit[128];
	bool ende=false;

	printf("Endzeit [HH:MM:SS]: ");
	scanf("%s",endzeit);
	fflush(stdin);
	system("cls");

	do
	{
		printf("Endzeit: %s\n",endzeit);
		_strtime( tmpbuf );
		printf( "OS time: %s\n", tmpbuf );

		if(tmpbuf==endzeit)
			break;

		Sleep(1000);
		system("cls");
	} 
	while(ende==false);
}

MfG Radhad
 
Code:
		if(tmpbuf==endzeit)
			break;
Das klappt deshalb nicht, weil hier zwei Pointer miteinander verglichen werden. Da sie beide in verschiedene Speicherbereiche zeigen, können sie natürlich auch nie gleich werden. Was du benötigst, ist ein Vergleich der beiden Zeichenketten, auf die die Pointer zeigen, und das kann strcmp().

int strcmp( const char *string1, const char *string2 );
Return Value

The return value for each of these functions indicates the lexicographic relation of string1 to string2.

Value Relationship of string1 to string2
< 0 string1 less than string2
0 string1 identical to string2
> 0 string1 greater than string2


Nebenbei: Da du ja mit Windows arbeitest, könntest du übrigens auch FILETIME verwenden, oder falls MFC möglich ist, auch CTime.
 
Danke, ich werd's mal ausprobieren. Und zu den Änderungen:

Never touch a running system! :D


MfG Radhad
 
Zurück