#include <stdio.h> #include <stdlib.h> #define SIZE 5 struct Student_type { char name[5]; int num; int age; char addr[15]; }stud[SIZE]; void save() { FILE *fp; int i; if((fp=fopen("stu10-4.txt","wb"))==NULL) { printf("cannot open file\n"); return; } for(i=0;i<SIZE;i++) if(fwrite(&stud[i],sizeof(struct Student_type),1,fp)!=1) printf("file write error\n"); //fcolse(fp); } void load() { FILE *fp; int i; if((fp=fopen("stu_list","rb"))==NULL) { printf("cannot open file\n"); exit(0); } for(i=0;i<SIZE;i++) if(fread(&stud[i],sizeof(struct Student_type),1,fp)!=1) { if(feof(fp)) { fclose(fp); return; } printf("file read error\n"); } printf("load end\n"); //fcolse(fp); } int main() { int i; printf("Please enter data of students:\n"); // for(i=0;i<SIZE;i++) // scanf("%s%d%d%s",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr); load(); for(i=0;i<SIZE;i++) printf("%10s,%5d,%5d%20s\n",stud[i].name,&stud[i].num,&stud[i].age,stud[i].addr); save(); return 0; }
时间: 2024-04-28 16:21:57 浏览: 18
这是一个 C 语言程序,实现了读写文件的功能,可以将学生信息存储到文件中,并从文件中读取信息并输出。程序中定义了一个结构体 Student_type,包含学生的姓名、学号、年龄和地址。首先定义了一个数组 stud 存储学生信息,然后通过 load 函数从文件中读取信息,如果文件不存在则输出错误信息并退出程序;如果读取信息时发生错误,则输出错误信息。接着通过 save 函数将学生信息写入文件中,如果文件无法打开则输出错误信息。最后在主函数中输出学生信息并保存到文件中。
相关问题
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef int ElemType; typedef struct
这段代码是C语言中的头文件引用和一些定义的示例。其中,`#include <stdio.h>`和`#include <stdlib.h>`是用来引入标准库函数的头文件。`stdio.h`包含了输入输出相关的函数,如`printf`和`scanf`;`stdlib.h`包含了一些常用的函数,如内存分配函数`malloc`和随机数生成函数`rand`。
`#define MAXSIZE 100`是一个宏定义,用来定义一个常量`MAXSIZE`,它的值为100。
`typedef int ElemType;`是用来给`int`类型起一个别名`ElemType`,方便在代码中使用。
至于代码中的结构体部分,由于你没有提供完整的代码,所以无法给出具体的解释。但一般来说,结构体用于定义一种自定义的数据类型,可以包含多个不同类型的成员变量。
根据数据结构知识给下面代码添加注释:#include+<stdio.h> #include+<stdlib.h> #include<string.h> #define+MAX_NAME+5 #def
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME 5
#define MAX_DETAIL 10
// 定义结构体
typedef struct {
char name[MAX_NAME];
char detail[MAX_DETAIL];
} FamilyMember;
int main() {
// 创建一个FamilyMember类型的数组
FamilyMember members[3];
// 给数组中的每个成员赋值
strcpy(members[0].name, "John");
strcpy(members[0].detail, "Father");
strcpy(members[1].name, "Mary");
strcpy(members[1].detail, "Mother");
strcpy(members[2].name, "Tom");
strcpy(members[2].detail, "Son");
// 打印数组中的每个成员的姓名和注释
for (int i = 0; i < 3; i++) {
printf("Name: %s\n", members[i].name);
printf("Detail: %s\n", members[i].detail);
printf("\n");
}
return 0;
}
```
这段代码定义了一个结构体`FamilyMember`,包含了姓名和注释两个成员变量。然后创建了一个`FamilyMember`类型的数组`members`,并给数组中的每个成员赋值。最后,通过循环打印数组中每个成员的姓名和注释。