关于C语言读取文件时候多读一行
2024-08-25 04:00:41
梗概:为什么C语言读取文件到结构体时为什么整天多读一行?一切都是【!feof(fp)】的错!!!
while (!feof(fp)) {
fgets(buffer, , fp);
j++;
}
像这样的代码,是很多C语言学者经常犯的错误!!
feof()这个函数是用来判断指针是否已经到达文件尾部的。
若fp已经指向文件末尾,则feof(fp)函数值为“真”,即返回非零值;否则返回0。
对呀!那有什么问题的呢?
其实feof() 这个函数是当读到文件结束符就返回 true 值,而非到文件最后一个字符,所以当读完文件最后一个字符时,如果后面还有换行或者空格的时候, 他会继续循环。所以就会多把最后循环一次。解决的方法其实很简单!!只需要把fgets放到while哪里判断就OK了!!
while (fgets(buffer, , fp)) {
j++;
}
怎样?简单粗暴吧??
最新文章
- 前端学HTTP之安全HTTP
- How those spring enable annotations work--转
- 模拟搭建Web项目的真实运行环境(五)
- 代理模式/proxy模式/结构型模式
- HTML代码简写法:Emmet和Haml
- shell中引用其他脚本的方法
- fedora 关闭、禁止selinux
- Netsh配置端口
- jdk+jira配置
- 使用 Spring Data JPA 简化 JPA 开发
- SHDP--Working With HBase(一)之基本介绍
- servlet生成随机验证码
- JSTL与EL(转)
- (中等) POJ 3034 Whac-a-Mole,DP。
- JDBC整合c3p0数据库连接池 解决Too many connections错误
- poj 1704 Georgia and Bob(阶梯博弈)
- 常用Mysql或者PostGresql或者Greenplum的语句总结。
- 深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -
- Strange Way to Express Integers(中国剩余定理+不互质)
- openstack常见问题解决方法总结