
打开文件的标准代码:
c
FILE *fp = fopen("file","r");
if(fp){
fscanf(fp,...);
fclose(fp);
}else{
...
}
Example 01:
```c
#include
int main(int argc,char const argv[]){ FILE fp = fopen("12.in","r"); if(fp){ int num; fscanf(fp,"%d",&num); printf("%d\n",num); fclose(fp); } else{ printf("无法打开文件\n"); }
return 0;
} ```
fopen

文件练习举例:
Example 01:
student.h
```c #ifndef STUDENT_H #define STUDENT_H
//const int STR_LEN = 20;
typedef struct _student{ char name[STR_LEN]; int gender; int age; }Student;
```
main.c
```c
#include
void getList(Student aStu[],int number); int save(Student aStu[],int number);
int main(int argc, char *argv[]) { int number = 0; printf("输入学生数量:"); scanf("%d",&number); Student aStu[number];
getList(aStu,number);
if(save(aStu,number)){
printf("保存成功\n");
}else{
printf("保存失败\n");
}
return 0;
}
void getList(Student aStu[],int number){ char format[STR_LEN]; //向字符串输出 sprintf(format,"%%%ds",STR_LEN-1); //%19s int i; for(i=0;i<number;i++){ printf("第%d个学生:\n",i); printf("\t姓名:"); scanf(format,aStu[i].name); printf("\t性别(0-男,1-女,2-其他):"); scanf("%d",&aStu[i].gender); printf("\t年龄:"); scanf("%d",&aStu[i].age); } }
int save(Student aStu[],int number){ int ret = -1; FILE *fp = fopen("student.data","w"); if(fp){ ret = fwrite(aStu,sizeof(Student),number,fp); fclose(fp); } return ret == number; } ```
测试结果:


Example 02:
read.c
```c
#include
void read(FILE *fp,int index);
int main(){
FILE *fp = fopen("student.data","r");
if(fp){
fseek(fp,0L,SEEK_END);
long size = ftell(fp);
int number = size / sizeof(Student);
int index = 0;
printf("有%d个数据,你要看第几个:",number);
scanf("%d",&index);
read(fp,index-1);
fclose(fp);
}
return 0;
}
void read(FILE *fp,int index){ fseek(fp,index * sizeof(Student),SEEK_SET); Student stu; if(fread(&stu,sizeof(Student),1,fp) == 1){ printf("第%d个学生:",index+1); printf("\t姓名:%s\n",stu.name); printf("\t性别:"); switch(stu.gender) { case 0:printf("男\n");break; case 1:printf("女\n");break; case 2:printf("其他\n");break; } printf("\t年龄:%d\n",stu.age); } } ```
Test Result:

