int findMaxAndMinValues(FILE *file)
{
int current_number, max_number = INT_MIN, min_number = INT_MAX;
rewind(file);
while (fscanf(file, "%d", ¤t_number)!=EOF)
{
printf("%d \n", current_number);
if (current_number > max_number) max_number = current_number;
if (current_number < min_number) min_number = current_number;
}
printf("Max: %d, Min: %d\n", max_number, min_number);
return 0;
}
Das funktioniert also gut, wenn die Textdatei nur voll mit Zahlen (und Leerzeichen/Zeilenumbrüche entsprechend) ist. Aber wenn ich ein Zeichen darin habe, fängt es an, nur die letzte Zahl zu wiederholen, die es gelesen hat, bevor es auf das Zeichen trifft. Dies ist die Textdatei:C fscanf gibt nie zurück EOF
1
2
3 4 5
16
12312
hello
Und das Ergebnis ist nur 12312 jede Zeile Aktualisierung endlos.
Nebenfrage: gibt es eine bessere Möglichkeit, Min/Max-Werte von Zahlen in einer Textdatei zu finden? Anstatt mit% d fscanf? EDIT: Danke für die Antwort, hier ist, wie ich es fest:
int findMaxAndMinValues(FILE *file)
{
int current_number, max_number = INT_MIN, min_number = INT_MAX;
int temp;
rewind(file);
while ((temp=fscanf(file, "%d", ¤t_number))!=EOF)
{
if (!temp) { fgetc(file); }
else {
printf("%d \n", current_number);
if (current_number > max_number) max_number = current_number;
if (current_number < min_number) min_number = current_number;
}
}
printf("Max: %d, Min: %d\n", max_number, min_number);
return 0;
}
Sie haben vergessen, eine Frage zu stellen. Sie haben keinen Code, um das "Hallo" in Ihrer Datei zu lesen, also liest nichts es jemals und so kommen Sie nie zum Ende der Datei. –