Ich habe ein Problem mit dem Schreiben von Zeichenfolgen in eine TXT-Datei. Meine Zeilen werden jedes Mal überschrieben. Ich verwende
gcc -Wall -o filename filename.c
, um zu kompilieren und ./filename 10 Berlin cat resultat.txt
auszuführen. Die TXT-Datei hat immer nur eine Zeile (die letzte), wie kann ich alle Datensätze speichern.Kann nicht schreiben in eine Textdatei mit for Schleife in c
Ich habe eine CSV-Datei mit Städtenamen und eine Anzahl von Einwohnern, ich muss für den Namen der Stadt und ein Minimum von Einwohnern filtern.
Was ich bisher versucht: gibt mir
.....
void write_file(char *result[], int len) {
FILE *fp = fopen("resultat.txt", "w");
if (fp == NULL){
perror("resultat.txt");
exit(1);
}
for (int i=0; i<len; i++) {
fprintf(fp, "%s\n", result[i]);
}
fclose(fp);
}
int main(int argc,char **argv) {
int anzahl = atoi(argv[1]);
char *string_array[100];
char *erste_zeile;
erste_zeile = (char *) malloc(1000 * sizeof(char));
char staedte[MAX_LAENGE_ARR][MAX_LAENGE_STR];
char laender[MAX_LAENGE_ARR][MAX_LAENGE_STR];
int bewohner[MAX_LAENGE_ARR];
int len = read_file("staedte.csv", staedte, laender, bewohner);
for (int i = 0; i < len; ++i){
if (strcmp(argv[2],laender[i])==0 && anzahl < bewohner[i]){
snprintf(erste_zeile, 100,"Die Stadt %s hat %d Einwohner\n",staedte[i],bewohner[i]);
string_array[0] = erste_zeile;
// counter++;
write_file(string_array,1);
}
}
free(erste_zeile);
return 0;
}
Mit der write_file()
Funktion außerhalb der for-Schleife null
Werte. Wenn jemand eine Idee hat, wie man den Code optimiert, hinterlasse bitte einen Kommentar oder antworte.
Es ist besser, die Datei nur vor der Schleife zu öffnen und nach der Schleife zu schließen. – Serge