/* 一个简单的系统,做学生信息管理系统的可以作为参考,也适合c入门学习研究
*/
#include <stdio.h> #include <stdlib.h> #include <string.h> #define LEN 2
//定义结构体类型 struct Student{
int ID; char name[20]; float score;
};
int main(int argc, const char * argv[]) {
//定义结构体数组变量,存储输入的学生信息 struct Student stu[LEN];
for (int i = 0; i < LEN; i++) {
printf("请输入第%d个学生的ID: ",i+1); scanf("%d",&stu.ID); getchar(); printf("请输入第%d个学生的姓名: ",i+1); gets(stu.name); printf("请输入第%d个学生的成绩: ",i+1); scanf("%f",&stu.score);
}
//设置保存信息的文件名 char *filename="sturct.data";
//以二进制读写的形式打开文件 FILE *fp = fopen(filename,"wb+");
//判断文件是否打开成功 if (fp!=NULL) {
printf("打开文件成功,正在写入...\n");
//以循环的方式将输入的信息保存到文件中 for (int i = 0; i < LEN; i++) {
//以数据块的形式将结构体写入文件中 fwrite(&stu, sizeof(stu), 1, fp);
}
printf("成功写入!\n");
}else{
printf("打开文件失败!按任意键退出...\n"); getchar();
//如果打开文件失败,则退出程序 exit(1);
}
//定义结构体变量数组,保存从文件中读入的信息 struct Student stu2[LEN];
while (1) {
//提示操作界面 printf("\n*************************\n"); printf("***** 1.读取文件 *****\n"); printf("***** 2.退出 *****\n"); printf("*************************\n");
printf("请输入你的选择:");
//定义变量,接收用户的输入 int op;
scanf("%d",&op);
if (op == 1) {
//将文件读写指针重置到文件头 rewind(fp);
for (int i = 0; i < LEN; i++) {
//以数据块的形式对文件进行读取 fread(&stu2, sizeof(stu2), 1, fp);
}
printf("读取文件成功!\n");
break;
}else if(op == 2){
printf("程序退出!\n"); return 0;
}else{
printf("你的输入无效,请重新输入!\n");
}
}
//关闭文件 fclose(fp);
printf("%4s----%4s----%4s\n","ID","name","score");
//以遍历的方式将从文件中读入的信息进行打印 for (int i = 0; i < LEN; i++) {
printf("%d----%s----%.1f\n",stu2.ID,stu2.name,stu2.score);
}
return 0; }
|