Hilfe zu Pionter.
-
Ich muss für die Schule ein Programm schreiben aber mir wird im Quellcode immer ein Fehler angezeit.
Vielleicht könnt ihr mir ja mal weiter helfen.#include <stdio.h>
unsigned int funktion(unsigned int *h, unsigned int *m, unsigned int *s){
do{
printf("Bitte Uhrzeit im Format hhss einlesen.");
fflush(stdout);
fflush(stdin);
scanf("%u:%u:%u", h, m, s);
}while((h > 24 || m > 59 || s > 59 || h == 24) && (m > 0 || s > 0));
} // bei der Schleife bekomme ich immer die Fehlermeldeun :
comparison between pointer and integerint main(void){
unsigned int h, m, s;
funktion(&h,&m,&s);
printf("Die Uhrzeit wurde richtig eingelesen.");
return 0;
}
-
july48 schrieb:
Ich muss für die Schule ein Programm schreiben aber mir wird im Quellcode immer ein Fehler angezeit.
Vielleicht könnt ihr mir ja mal weiter helfen.#include <stdio.h> unsigned int funktion(unsigned int *h, unsigned int *m, unsigned int *s){ do{ printf("Bitte Uhrzeit im Format hh:mm:ss einlesen."); fflush(stdout); fflush(stdin); scanf("%u:%u:%u", h, m, s); }while((h > 24 || m > 59 || s > 59 || h == 24) && (m > 0 || s > 0)); } // bei der Schleife bekomme ich immer die Fehlermeldeun : comparison between pointer and integer int main(void){ unsigned int h, m, s; funktion(&h,&m,&s); printf("Die Uhrzeit wurde richtig eingelesen."); return 0; }
Bitte C++ Tags verwenden.
-
Da h, m und s Pointer sind musst du sie erst dereferenzieren, um den Wert zu erhalten. Das geht mit dem * Operator.
z.B.: while (*h > 24....
fflush(stdin) ist undefiniert!
-
Evtl. irgendwie so:
#include <stdio.h> void funktion(unsigned int *h, unsigned int *m, unsigned int *s) { int rc; do { printf("Bitte Uhrzeit im Format hh:mm:ss eingeben: "); fflush(stdout); rc = scanf("%u:%u:%u", h, m, s); while (getchar() != '\n'); if (rc != 3) { continue; } } while ((*h >= 24 || *m > 59 || *s > 59 || *m < 0 || *s < 0)); } int main(void) { unsigned int h, m, s; funktion(&h,&m,&s); printf("Die Uhrzeit wurde richtig eingelesen: %u:%u:%u\n", h, m, s); return 0; }
-
ghjghj schrieb:
Evtl. irgendwie so:
} while ((*h >= 24 || *m > 59 || *s > 59 || *m < 0 || *s < 0));
Es macht keinen Sinn, Minute und Sekunde auf < 0 zu prüfen (unsigned).
Vermutlich war beabsichtigt, auch 24:00:00 als gültige Uhrzeit zuzulassen,
dann müßte es etwa so aussehen:} while (*h > 24 || *m > 59 || *s > 59 || *h == 24 && (*m > 0 || *s > 0));
[/quote]
-
abgesehen davon, dass man wenn es um uhrzeiten etc.
geht doch gut die <time.h> verwenden kann - wenn erlaubt^^.