`

c 语言中fread()函数使用时应该注意的地方

阅读更多

用c语言做了个通讯录,系统一运行时便将数据文件加载进内存,并用链表存储。退出系统时,自动将链表中的所有节点再存入文件。

可是现在,每次退出系统,文件里都会比链表多存储一条记录。
如:现在只有两条记录,退出后在启动时一查询,就会多一条乱记录(系统自己加的)。

加载文件的部分代码如下:
/*判断文件是否为空*/
fseek(groupfp,0,2);/*指针指向group.dat文件尾部*/
fseek(linkmanfp,0,2);/*指针指向linkman.dat文件尾部*/
if(ftell(groupfp)>0){ /*文件非空*/
rewind(groupfp);/*文件指针重新指向文件开始处*/
/*下面要装载该文件到group链表中*/
while(!feof(groupfp)){
p=(GroupNote)malloc(sizeof(struct groupnote));
fread(p,sizeof(struct groupnote),1,groupfp);
p->next=NULL;/*刚读取进来的指针是上一次的,所以重新赋值为空*/
gn->next=p;
gn=p;/*尾插法*/
/*注意:p->next上面已经赋值为空了,所以这里不需要再次赋值了*/
group.length++; /*链表长度加1*/
}/*while*/
group.tail=gn;/*将尾指针指向group链表的结尾*/


fread(p,sizeof(struct groupnote),1,groupfp);
改成
if (fread(p,sizeof(struct groupnote),1,groupfp) != 1) {
free(p);
break;
}

这是因为有些库函数的写法,是在fread失败之后才设文件终结符的,这样在最后一个数据读完后还会再执行一次循环.

分享到:
评论

相关推荐

    谭浩强c语言程序设计

    13.4.3 数据块读写函数fread和fwtrite 209 13.4.4 格式化读写函数fscanf和fprintf 201 13.5 文件的随机读写 202 13.5.1 文件定位 202 13.5.2 文件的随机读写 203 13.6 文件检测函数 204 13.6.1 文件结束检测函数feof...

    《C语言程序设计》谭浩强

    13.4.3 数据块读写函数fread和fwtrite 209 13.4.4 格式化读写函数fscanf和fprintf 201 13.5 文件的随机读写 202 13.5.1 文件定位 202 13.5.2 文件的随机读写 203 13.6 文件检测函数 204 13.6.1 文件结束检测函数feof...

    谭浩强版c语言程序设计

    13.4.3 数据块读写函数fread和fwtrite 209 13.4.4 格式化读写函数fscanf和fprintf 201 13.5 文件的随机读写 202 13.5.1 文件定位 202 13.5.2 文件的随机读写 203 13.6 文件检测函数 204 13.6.1 文件结束检测函数feof...

    C语言文件读写.zip

    在处理文件时,C语言还提供了文件定位函数,如`fseek`和`ftell`,它们允许程序在文件中移动文件指针到指定位置,从而实现对文件的随机访问。这对于需要处理大型文件或需要多次访问文件特定部分的程序来说非常有用。 ...

    谭浩强 C语言程序设计 教程全书 Word版

    13.4.3 数据块读写函数fread和fwtrite 9 13.4.4 格式化读写函数fscanf和fprintf 11 13.5 文件的随机读写 12 13.5.1 文件定位 12 13.5.2 文件的随机读写 13 13.6 文件检测函数 14 13.6.1 文件结束检测函数feof函数 14...

    谭浩强C语言word版

    3.5.4 字符数据在内存中的存储形式及使用方法 10 3.5.5 字符串常量 11 3.5.6 符号常量 12 3.6 变量赋初值 12 3.7 各类数值型数据之间的混合运算 13 3.8 算术运算符和算术表达式 14 3.8.1 C运算符简介 14 3.8.2 算术...

    -C++参考大全(第四版) (2010 年度畅销榜

    25.13 fread函数 25.14 freopen函数 25.15 fscmff函数 25.16 fseek函数 25.17 fsetpos函数 25.18 ftell函数 25.19 fwrite函数 25.20 gete函数 25.21 getchar函数 25.22 gets函数 25.23 perror函数 25.24 prinff函数 ...

    C语言讲义.doc

    2 C语言中的数据类型 19 2.1 常量 19 2.1.1 #define 19 2.1.2 const 19 2.2 字符串常量 20 2.3 二进制数、位、字节与字 20 2.4 八进制 20 2.5 十六进制 20 2.6 原码 21 2.7 反码 21 2.8 补码 21 2.9 SIZEOF关键字 22...

    c语言程序设计(第三版)

    13.4.3 数据块读写函数fread和fwtrite 9 13.4.4 格式化读写函数fscanf和fprintf 11 13.5 文件的随机读写 12 13.5.1 文件定位 12 13.5.2 文件的随机读写 13 13.6 文件检测函数 14 13.6.1 文件结束检测函数feof函数 14...

    谭浩强c语言word版

    13.4.3 数据块读写函数fread和fwtrite 209 13.4.4 格式化读写函数fscanf和fprintf 201 13.5 文件的随机读写 202 13.5.1 文件定位 202 13.5.2 文件的随机读写 203 13.6 文件检测函数 204 13.6.1 文件结束检测函数feof...

    谭浩强C语言教程Word版

    2 1.2 当代最优秀的程序设计语言 2 1.3 C语言版本 2 1.4 C语言的特点 3 1.5 面向对象的程序设计语言 3 1.6 C和C++ 3 1.7 简单的C程序介绍 4 1.8 输入和输出函数 5 1.9 C源...

    c语言(编写程序最佳参考资料)

    c语言(编写程序最佳参考资料) 1.1 C语言的发展过程... 2 1.2 当代最优秀的程序设计语言... 2 1.3 C语言版本... 2 1.4 C语言的特点... 3 1.5 面向对象的程序设计语言... 3 1.6 C和C++... 3 1.7 简单的...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar )

    *3.4.2 在输入流与输出流中使用控制符 3.4.3 用getchar和putchar函数进行字符的输入和输出 3.4.4 用scanf和printf函数进行输入和输出 3.5 编写顺序结构的程序 3.6 关系运算和逻辑运算 3.6.1 关系运算和关系表达式 ...

    C语言编程精彩百例(附原书源代码)

     全文共分为四篇,全面、系统地讲述了C语言各个方面的知识点和程序设计的基本方法,以及编写程序过程中值得注意的地方,内容深入浅出,通俗易懂。对于C语言的初学者来说,这是一本绝对好的入门教材,对于有经验的...

    谭浩强C程序设计第三版

    数据块读写函数fread和fwtrite 207 格式化读写函数fscanf和fprintf 209 文件的随机读写 210 文件定位 210 文件的随机读写 211 文件检测函数 211 文件结束检测函数feof函数 212 读写文件出错检测函数 212 文件出错...

    谭浩强C语言程序设计,C++程序设计,严蔚敏数据结构,高一凡数据结构算法分析与实现.rar

    *3.4.2 在输入流与输出流中使用控制符 3.4.3 用getchar和putchar函数进行字符的输入和输出 3.4.4 用scanf和printf函数进行输入和输出 3.5 编写顺序结构的程序 3.6 关系运算和逻辑运算 3.6.1 关系运算和关系表达式 ...

    二级c未来教育题库破解及资源

    3.文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),文件的定位(rewind,fseek函数的应用)。 3 考试方式 上机考试,考试时长120分钟,满分100分。 1.题型及分值 单项...

    09年二级C语言考试大纲

    文件的读写(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf函数的应用),文件的定位(rewind,fseek函数的应用)。 考试方式 1.笔试:120分钟,满分100分,其中含公共基础知识部分的30分。 2....

    Linux程序设计中文第4版.part1

     3.5.2 fread函数2  3.5.3 fwrite函数2  3.5.4 fclose函数2  3.5.5 fflush函数3  3.5.6 fseek函数3 第4章 Linux环境14 第5章 终端 第6章 使用curses函数库管理基于文本的屏幕 第7章 数据管理 第8章 ...

Global site tag (gtag.js) - Google Analytics