1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
|
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
//beachte, dass char nicht ausreicht! Es handelt sich um Strings.
//Strings sind nichts anderes als char-Arrays.
typedef struct kunde {
char anrede[50];
char vorname[100];
char name[100];
char strasse[200];
char hausnr[10]; //Hausnummern enthalten auch oft Buchstaben, deswegen kein int
char plz[6]; //muss mindestens 6 lang sein, wegen \0 Terminierung! char[] wegen führender 0
char stadt[100];
} kunde_t;
int main(int argc, char **argv){
FILE *fptr;
kunde_t kunde;
fptr = fopen("kunde.txt", "r");
while(!feof(fptr)){
//Die Zahlen hinter den s geben ein Limit für
//die Länge an, so dass nicht über die Länge des
//Ziel-Arrays hinaus gelesen werden kann
//Wichtig! Das Limit muss eins kleiner sein
//als die Länge des Arrays, da nach den eingelesenen
//Zeichen noch die Terminierung eingefügt wird
fscanf(fptr, "%49s%99s%99s%199s%9s%6s%99s",
kunde.anrede,
kunde.vorname,
kunde.name,
kunde.strasse,
kunde.hausnr,
kunde.plz,
kunde.stadt);
//strcmp gibt nicht! 1 zurück, wenn sich die beiden strings unterschreiden,
//sondern eine Zahl, die Auskunft über den Unterschied gibt.
if(!strcmp(kunde.stadt, "Düsseldorf") && !strcmp(kunde.plz, "40210")){
printf("%s %s %s\n", kunde.anrede, kunde.vorname, kunde.name);
}
}
return 0;
}
|