8.1 文件输入输出
- linux 用 > 和 < 做重定向
![></cat_post_image><ul><li>打开文件的标准代码:</li></ul><pre><code> FILE *fp = fopen("file","r");
if(fp){
fscanf(fp,...);
fclose(fp);
}else{
...
}</code></pre><ul><li>Example 01:</li></ul><pre><code> #include <stdio.h>
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;
}</code></pre><h3>fopen</h3><cat_post_image><img src=](https://cos.gjcloak.xyz/CS-Notes/20200423185336.png)

8.4 文件中定位
Example 02:
- read.c
#include <stdio.h>
#include "student.h"
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:

- 可移植性