C语言中的文件读取操作
1、文件读取的作用是什么?
在数据库这一概念还没被提出来的时候,数据的读写操作可以使用文件来完成。我们可以将想要持久化的数据写入文件,在下一次查看时再通过读取文件调用出来。除此之外,在大数据量传输的时候还可用通过压缩数据写到文件来提高传输效率。
2、文件基础的操作方式
r:读取,如果文件不存在,函数调用失败;
w:为写入操作打开一个空文件。若文件不存在,则创建一个文件;若给定的文件已经存在,那么它的内容将被清空;
a:为写入操作打开文件。若文件不存在,则首先创建一个文件;若文件存在,那么在该文件结尾添加新数据,在写入数据之前,不会移除已有的EOF标记;
r+:打开文件用于写入操作和读取操作,文件必须存在;
w+:写入和读取,其他同w;
a+:打开文件用于读取和添加操作,其他同a。
3、 文件读取代码示例
FILE fp;//定义文件指针
fp = fopen(“1.txt”, “r+”);//“1.txt”是指在当前项目中创建的文件,“r+”为操作方式,你可以 对照上边的表进行操作;
if (fp ==NULL){//当文件不存在,或者无法创建时会报错;
printf(“读取文件失败!!!\n”);
}
while(!feof(fp)){//FEOF是文件操作指针,当该指针指向文件尾部时(数据读取完)会返回1
//将文件里的数据读到链表里面
pnew1 = (struct Student)malloc(sizeof(struct Student));
//fscanf可以将硬盘里的数据读取到内存中
fscanf(fp, “%s%d%f”, pnew1->name,&pnew1->num,&pnew1->score);
pnew1->pnext= NULL;
phead7->pnext = pnew1;
phead7 = phead7->pnext;
}
//切记,文件操作完之后一定要关闭文件流,释放内存;
fclose(fp);
3.将内存中的数据存到文件中
struct Student *phead5 = phead->pnext;
FILE *fp;/同样定义一个文件指针;
fp = fopen(“1.txt”,“a+”);//a+表示追加数据;
if (fp == NULL){
printf(“打开文件失败!!!\n”);
}
while (phead5 != NULL){
//fprintf能将链表结点里的数据打印到对应的文件中;
fprintf(fp, “%s\t\t%d\t\t%.2f\t\t\n”, phead5->name,phead5->num,phead5->score);
phead5 = phead5->pnext;
}
//最后记得一定要关闭文件流!!!
fclose(fp);
4、 说明
关于文件的输入与输出不止fprintf,fscanf两种,不过我个人比较喜欢用这两种,有兴趣的朋友可以百度寻找其他的几个方法