Ich habe ein Stück Code geschrieben, die eine Textdatei foo.txt liest, die von Format ist:Kann jemand den Segmentierungsfehler in diesem erklären?
1
2
3
4
Es speichert die zuletzt gewählte Nummer und erhöht sie und schreibt sie zurück. Dies ist der Teil, wo ich die letzte Nummer speichern und der nächste Teil des Codes wird die Nummer in die Datei schreiben. Die Datei wird von ./readfile 100 foo.txt
aufgerufen, wobei 100 die Anzahl angibt, mit der die letzte Nummer erhöht werden muss.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
FILE *fp;
char ch[100];
int i = 0;
int j = 0;
int count = atoi(argv[1]);
while (count != 0) {
fp = fopen(argv[2], "r");
while (fp) {
ch[i] = fgetc(fp);
i++;
j = i;
printf("%d", j);
}
fclose(fp);
count--;
}
return 0;
}
'while (fp)' wird immer wahr sein (vorausgesetzt, der Aufruf von 'fopen' ist erfolgreich). – Cornstalks
Fügen Sie in Ihrer while-Schleife 'if (feof (fp)) break;' –
@NickWhite hinzu: [Verwenden Sie nicht 'feof'] (http://stackoverflow.com/a/3181093/364696). Dateioperationen sollten im Allgemeinen das verwenden, was Python das EAFP-Muster nennt (Leichter Vergeben als Vergeben nach Erlaubnis); tun Sie, was Sie tun möchten, und behandeln Sie den Fehler. – ShadowRanger