文字列をtxtファイルに書き込む際に問題があります。毎回私の行が上書きされます。私はコンパイルするには
gcc -Wall -o filename filename.c
を、実行するには./filename 10 Berlin cat resultat.txt
を使用します。 txtファイルには、すべてのレコードを保存するには、常に1行(最後の行)しかありません。forループでテキストファイルに書き込めません
私は都市名と住民の数とのCSVファイルを持っていますので、都市名と最低限の住民をフィルタリングする必要があります。 forループの外でwrite_file()
機能を使用して
.....
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;
}
は私にnull
値を与える:私がこれまで試したどのような
。誰かがコードを最適化する方法を知っている場合は、コメントまたは回答を残してください。
ファイルをループの前に開いてループの後に閉じる方が良いです。 – Serge