啊~~~ 一年過去了, 大學剩下 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)