.csv
并将输出保存为.txt文件。问题是,我有这个额外的
\n
.txt
之后归档。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "input3.h"
int main(int argc, char **argv) {
if (argc < 3) {
printf("Aufruf: %s <anzahl> <bundesland>\n", argv[0]);
printf("Beispiel: %s 100 Bayern\n", argv[0]);
printf("Klein-/Großschreibung beachten!\n");
exit(1);
}
int anzahl = atoi(argv[1]);
char *bundesland = argv[2];
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);
int offset = 0;
char *a = (char*) malloc(MAX_LAENGE_ARR * sizeof(char));
for (int i = 0; i < MAX_LAENGE_ARR; ++i) {
if(strcmp(bundesland,laender[i]) == 0 && bewohner[i] >= anzahl){
int written = snprintf(a + offset, MAX_LAENGE_STR ,"Die Stadt %s hat %d Einwohner. \n", staedte[i], bewohner[i]);
offset += written;
}
}
printf("STAEDTE : %s \n", a);
write_file(&a,1);
free(a);
}
输出:
cat results.txt
Die Stadt München hat 1353186 Einwohner.
Die Stadt Nürnberg hat 505664 Einwohner.
Die Stadt Augsburg hat 264708 Einwohner.
Die Stadt Regensburg hat 135520 Einwohner.
Die Stadt Würzburg hat 133799 Einwohner.
Die Stadt Ingolstadt hat 125088 Einwohner.
Die Stadt Fürth hat 114628 Einwohner.
Die Stadt Erlangen hat 105629 Einwohner.
// a blank line at the end.
我不允许更改write\ u 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);
}
编辑1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "input3.h"
int main(int argc, char **argv) {
if (argc < 3) {
printf("Aufruf: %s <anzahl> <bundesland>\n", argv[0]);
printf("Beispiel: %s 100 Bayern\n", argv[0]);
printf("Klein-/Großschreibung beachten!\n");
exit(1);
}
int anzahl = atoi(argv[1]);
char *bundesland = argv[2];
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);
int count = 0;
char **a = malloc(MAX_LAENGE_ARR * sizeof(char*));
for (int i = 0; i < MAX_LAENGE_ARR; ++i) {
if(strcmp(bundesland,laender[i]) == 0 && bewohner[i] >= anzahl){
a[i] = malloc(MAX_LAENGE_STR * sizeof(char));
snprintf(a[i], MAX_LAENGE_STR ,"Die Stadt %s hat %d Einwohner.", staedte[i], bewohner[i]);
count++;
}
}
write_file(a, count);
free(a);
}
(null)
(null)
Die Stadt München hat 1353186 Einwohner.
(null)
(null)
(null)
(null)
(null)