Ich mache einen Dateileser, der Ganzzahlen Zahlen Zeile für Zeile aus einer Datei liest. Das Problem ist, dass es nicht funktioniert. Ich denke, ich benutze fscanf falsch. Kann mir jemand helfen?Lesen von Ganzzahlen aus der TXT-Datei in C
Ich hatte bereits in anderen Fragen nach Antworten gesucht, aber ich kann nichts finden, das erklärt, warum ich meinen Code nicht funktioniert.
int read_from_txt(){
FILE *file;
file = fopen("random_numbers.txt", "r");
//Counting line numbers to allocate exact memory
int i;
unsigned int lines = 0;
unsigned int *num;
char ch;
while(!feof(file)){
ch = fgetc(file);
if (ch == '\n'){
lines++;
}
}
//array size will be lines+1
num = malloc(sizeof(int)*(lines+1));
//storing random_numbers in num vector
for(i=0;i<=lines;i++){
fscanf(file, "%d", &num[i]);
printf("%d", num[i]);
}
fclose(file);
}
Die txt-Datei ist wie:
12
15
32
68
46
...
Aber der Ausgang dieses Codes hält "0000000000000000000 ..." geben
überprüfen, nachdem die 'fgetc'-Schleife den Dateizeiger am Ende der Datei befindet. Sie müssen die Datei zurückspulen, bevor Sie sie erneut lesen. – kaylum
@Lashane 'Datei' wurde im Textmodus geöffnet. Textdateien, die der C-Bibliothek des Compilers entsprechen und eine Textdatei verstehen, übersetzen das '\ n',' \ r \ n' oder '\ r' in ein' \ n''. 'if (ch == '\ n')' ist ausreichend. Wenn andere Textdateien verarbeitet werden müssen, treten viele andere Probleme auf, die über den Umfang dieses Posts hinausgehen. – chux
Tipp: Jeder Zeitcode verhält sich nicht wie erwartet und der Code tut I/O, Code hinzufügen, um den Rückgabewert von I/O-Funktionen wie 'fscanf (Datei,"% d ", & num [i]); hätte ein Problem gezeigt - das spart Zeit. – chux