文件操作1
简单的文件操作
//将2个学生的记录输入txt文件,并且显示在屏幕中 #include <stdio.h> #include <stdlib.h> #define N 2 typedef struct stu{ char Class[20]; int age; char name[9]; }stu;//需要自定义类型(typedef),stu才能定义对象 int main() { int i,n; char Class[20]; int age; char name[9]; FILE *fp; printf("将学生信息写入文件:\n"); fp = fopen("E:\\c\\stu.txt","w");//对指定文件进行写操作 for(i=0;i<N;i++) { printf("学生班级:"); scanf("%s",&Class); printf("学生年龄:"); scanf("%d",&age); printf("学生姓名:"); scanf("%s",&name); fprintf(fp,"%s%6d%10s",Class,age,name);//将学生信息写到文件中去 fputc('\n',fp);//没写入一条信息就换行此处'\n'可替换为'\r' } fclose(fp);//关闭文件 printf("从文件中读取学生信息:\n"); fp = fopen("E:\\c\\stu.txt","r");//对指定文件进行读操作 for(i=0;i<N;i++) { fscanf(fp,"%s%6d%20s",&Class,&age,&name); printf("学生班级:%s,学生年龄:%d,学生姓名:%s\n",Class,age,name); } fclose(fp); printf("向文件中追加学生信息:\n"); fp = fopen("E:\\c\\stu.txt","wb"); printf("追加个数:"); scanf("%d",&n); stu *s = (stu*)malloc(sizeof(stu)*n);//动态开辟结构体数组 for(i=0;i<n;i++) { printf("学生班级:"); scanf("%s",&s[i].Class); printf("学生年龄:"); scanf("%d",&s[i].age); printf("学生姓名:"); scanf("%s",&s[i].name); } if(fwrite(&s,sizeof(stu),n,fp)!=n)//操作成功,则返回实际写入文件的数据块的个数 { printf("文件不能写入数据!\n"); exit(1); } fclose(fp); printf("从文件中追读学生信息:\n"); fp = fopen("E:\\c\\stu.txt","rb"); if(fread(&s,sizeof(stu),n,fp)!=n)//操作成功,则返回实际读取文件的数据块的个数 { printf("文件不能读出数据!\n"); exit(1); } for(i=0;i<n;i++) { printf("学生班级:%s,学生年龄:%d,学生姓名:%s\n",s[i].Class,s[i].age,s[i].name); } fclose(fp); return 0; }