2017-05-30 5 views
0

Ich bin ein Anfänger in C-Sprache. Hier möchte ich Daten aus der Datei * fileptrIn lesen und einige Berechnungen durchführen und die Antworten in * fileptrOut speichern. Aber ich bekomme eine Endlosschleife mit dem ersten Element in der Datei * fileptrIn. Es druckt nur das erste Element in der Datei * fileptrIn wiederholt im Terminal. Da ich keine Kompilierungsfehler erhalte, kann ich den Fehler nicht erkennen. Irgendwelche Vorschläge, um meinen Code zu bearbeiten?C Lesen von Daten aus einer Datei und Speichern von Berechnungen in einer anderen Datei

#include<stdio.h> 

int main(void) 
{ 
int value; 
int total = 0; 
int count = 0; 

FILE *fileptrIn; 

fileptrIn = fopen("input.txt", "r"); 

if(fileptrIn == NULL) 
{ 
    printf("\nError opening for reading.\n"); 

    return -1; 
} 

printf("\nThe data:\n"); 

fscanf(fileptrIn, "%d", &value); 

while(!feof(fileptrIn)) 
{ 
    printf("%d", value); 

    total += value; 

    ++count; 
} 

fclose(fileptrIn); 

return 0; 
} 
+0

Sie werden [** Warum ist während immer falsch ** (feof (Datei)!)?] Aussehen soll (http: // Stackoverflow. com/questions/5431941/why-is-while-feof-Datei-immer falsch). –

Antwort

0

Neben der andere Antwort zu erreichen, und von meinem Kommentar fortfahren, müssen Sie Validate alle Eingang. Sie können dies erreichen, während das while (!feof(file)) Problem zu entfernen, wie folgt:

while (fscanf (fileptrIn, "%d", &value) == 1) { 
    printf ("%d", value); 
    total += value; 
    ++count; 
} 
+0

Thx es hat auch funktioniert :) Abgesehen davon, welche Änderungen kann ich tun, um mehrere Datensätze in meine neue Datei * fileptrOut schreiben? :(@ david-c-rankin –

+0

Sie lesen "int" -Werte aus einer Datei, also werden Sie im Allgemeinen die Werte, die Sie in einem Array gelesen haben, speichern. (initialisieren Sie "int n = 0; int arrray [500] = {0} ; 'Am Anfang deines Codes und dann bei jedem Lesen von' value' steht 'array [n ++] = value;' Dann kannst du das Array in dein 'fileptrOut' schreiben. Du musst das Format wählen, das du schreiben willst (zB 1-Wert pro Zeile, 10 Werte pro Zeile, was auch immer ...) Im Grunde ist es "für (int i = 0; i

0
while(!feof(fileptrIn)) 
{ 
    printf("%d", value); 

    total += value; 

    ++count; 
} 

Sie sind nicht etwas Looping Lesen so der Dateizeiger vorher nicht EOF

Verwandte Themen