看板 ESOE-90 關於我們 聯絡資訊
啊~~~ 一年過去了, 大學剩下 3/4. >_< ----------------------------------------------------------------------- E1) # include <stdio.h> # include <stdlib.h> # define MAXLEN (80 + 1) typedef struct user user; struct user { char name[MAXLEN]; int sex; char birth[MAXLEN]; int age; }; const char *sexstr[] = {"Unknown", "Male", "Female"}; int main() { FILE *fp; user usr; int n; if ((fp = fopen("data.txt", "w")) == NULL) exit(1); while (!feof(stdin)) { puts("Name/Sex/Birth Place/Age?"); n = fscanf(stdin, "%s%d%s%d", usr.name, &usr.sex, usr.birth, &usr.age); if (n < 4) continue; fprintf(fp, "Name: %s\n" "Sex: %s (%d)\n" "Birth Place: %s\n" "Age: %d\n\n", usr.name, sexstr[usr.sex], usr.sex, usr.birth, usr.age ); } fclose(fp); return 0; } ----------------------------------------------------------------------- -- E1 output -- Name/Sex/Birth Place/Age? loomi 2 taipei 19 Name/Sex/Birth Place/Age? acho 1 taipei 19 Name/Sex/Birth Place/Age? derricklee 1 taipei 19 Name/Sex/Birth Place/Age? sealemon 0 mars/??? 0 Name/Sex/Birth Place/Age? bala 1 taiwan 99 Name/Sex/Birth Place/Age? sealemon 1 taipei 19 Name/Sex/Birth Place/Age? -- data.txt -- Name: loomi Sex: Female (2) Birth Place: taipei Age: 19 Name: acho Sex: Male (1) Birth Place: taipei Age: 19 Name: derricklee Sex: Male (1) Birth Place: taipei Age: 19 Name: sealemon Sex: Unknown (0) Birth Place: mars/??? Age: 0 Name: bala Sex: Male (1) Birth Place: taiwan Age: 99 Name: sealemon Sex: Male (1) Birth Place: taipei Age: 19 ----------------------------------------------------------------------- E2) # include <stdio.h> # include <stdlib.h> # define MAXLEN (80 + 1) typedef struct user user; struct user { char name[MAXLEN]; int sex; char birth[MAXLEN]; int age; }; const char *sexstr[] = {"Unknown", "Male", "Female"}; int main() { FILE *fp; user usr; int n; if ((fp = fopen("data.txt", "r")) == NULL) exit(1); while (!feof(fp)) { n = fscanf(fp, "Name: %s\n" "Sex: %*s (%d)\n" "Birth Place: %s\n" "Age: %d\n", usr.name, &usr.sex, usr.birth, &usr.age ); if (n < 4) continue; printf("%-15s %-8s %-15s %4d\n", usr.name, sexstr[usr.sex], usr.birth, usr.age ); } fclose(fp); return 0; } ----------------------------------------------------------------------- -- E2 output -- loomi Female taipei 19 acho Male taipei 19 derricklee Male taipei 19 sealemon Unknown mars/??? 0 bala Male taiwan 99 sealemon Male taipei 19 ----------------------------------------------------------------------- E3) # include <stdio.h> # include <stdlib.h> # define MAXLEN (80 + 1) typedef struct user user; struct user { char name[MAXLEN]; int sex; char birth[MAXLEN]; int age; }; int query_by_name(FILE *, const char *, user *); const char *sexstr[] = {"Unknown", "Male", "Female"}; int main() { FILE *fp; char name[MAXLEN] = ""; user usr; if ((fp = fopen("data.txt", "r")) == NULL) exit(1); while (!feof(stdin)) { puts("Whom would you like to query?"); if (scanf("%s", name) < 1) continue; while (query_by_name(fp, name, &usr) > 0) printf("%-15s %-8s %-15s %4d\n", usr.name, sexstr[usr.sex], usr.birth, usr.age ); rewind(fp); } fclose(fp); return 0; } int query_by_name(FILE *fp, const char *name, user *usr) { int n; while (!feof(fp)) { n = fscanf(fp, "Name: %s\n" "Sex: %*s (%d)\n" "Birth Place: %s\n" "Age: %d\n", usr->name, &usr->sex, usr->birth, &usr->age ); if (n < 4) continue; else if (!strcmp(usr->name, name)) return 1; } return 0; } ----------------------------------------------------------------------- -- E3 output -- Whom would you like to query? loomi loomi Female taipei 19 Whom would you like to query? bala bala Male taiwan 99 Whom would you like to query? sealemon sealemon Unknown mars/??? 0 sealemon Male taipei 19 Whom would you like to query? ----------------------------------------------------------------------- -- 新詩練習:新鮮。踩破初春裡的狗大便;不經意的滄桑,滿溢著嫩黃的喜悅。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.224.160.105 ※ 編輯: Muscovy 來自: 61.224.160.105 (06/05 16:28)