void WritetoFile()//将每个学生的记录信息写入文件
{
int i, j;
FILE* fp;
fp = fopen("D:/student.txt", "w"); //文件放在D盘下
if (fp == NULL)
{
printf("打开 student.txt失败\n");
return;
}
fprintf(fp, "SN and CN\n");
fprintf(fp,"%d %d\n",n,m);
fprintf(fp, "学号\t姓名\t成绩\t总分\t平均分\n");
for (i = 0; i < n; i++) { //循环写入信息
fprintf(fp, "%ld\t%s\t%.2lf\t%.2lf\t%.2lf\n", s[i].num, s[i].name, s[i].score, s[i].sum, s[i].aver);
}
fclose(fp);
}
void ReadfromFile()//从文件中读出每个学生的记录信息并显示
{
FILE* fp;
int i, j;
char name[100];
char temp[100];
float score[100];
char a[100];
char b[100];
char c[100];
int sn,cn;
//int n = 2, m;
fp = fopen("D:/student.txt", "r");
if (fp == NULL)
{
printf(" 打开student.txt失败\n");
return;
}
for (i = 0; i < 3; i++) { //读取第一行
fscanf(fp, "%s", name);
printf("%s ", name);
}
printf("\n");
for(i=0;i<2;i++){
fscanf(fp,"%d%d",&n,&m);
}
printf("%d %d",n,m);
printf("\n");
for (i = 0; i < 5; i++) { //读取第二行
fscanf(fp, "%s", name);
printf("%s\t", name);
}
printf("\n");
for (i = 0; i < n; i++) {
fscanf(fp, "%d", &s[i].num);
fscanf(fp, "%s", s[i].name);
fscanf(fp, "%s", a); //按照字符串读取
fscanf(fp, "%s", b);
fscanf(fp, "%s", c);
s[i].score[0] = atoi(a); //转化成对应类型(float)
s[i].sum = atoi(b);
s[i].aver = atoi(c);
printf("%d\t%s\t%.2lf\t%.2lf\t%.2lf\n", s[i].num, s[i].name, s[i].score[0], s[i].sum, s[i].aver); //每读取一行就输出
}
getchar();
getchar();
}
另一个读文件(EOF):
LinkList read() {
int i, j;
LinkList head;
Node* r, * s;
FILE* fp;
char fileName[40];
char fileName1[40] = "D:/";
printf("请输入要读取的文件名:");
scanf("%s", fileName);
int length = strlen(fileName);
j = 3;
for (i = 0; i < length; i++) {
fileName1[j++] = fileName[i];
}
fp = fopen(fileName1, "r");
if (fp == NULL) {
printf("读文件错误");
return NULL;
}
head = InitList();
r = head;
while (1) {
s = (Node*)malloc(sizeof(Node));
struct Data* data;
data = (d*)malloc(sizeof(d));
if (fscanf(fp, "%s\t%d\t%lf\t%lld\t%lld\t%s\n", data->name, &data->number, &data->temperature, &data->id, &data->phone, data->address) == EOF) {
free(data);
break;
}
s->data = *data;
r->next = s;
r = s;
}
r->next = NULL;
fclose(fp);
return head;
}