关于C语言读取文件时候多读一行
2014-06-08 13:44
375 查看
梗概:为什么C语言读取文件到结构体时为什么整天多读一行?一切都是【!feof(fp)】的错!!!
while (!feof(fp))
{
fgets(buffer,256,fp);
j++;
}
像这样的代码,是很多C语言学者经常犯的错误!!
对呀!那有什么问题的呢?
其实feof() 这个函数是当读到文件结束符就返回 true 值,而非到文件最后一个字符,所以当读完文件最后一个字符时,如果后面还有换行或者空格的时候, 他会继续循环。所以就会多把最后循环一次。解决的方法其实很简单!!只需要把fgets放到while哪里判断就OK了!!
while (fgets(buffer,256,fp))
{
j++;
}
怎样?简单粗暴吧??
while (!feof(fp))
{
fgets(buffer,256,fp);
j++;
}
像这样的代码,是很多C语言学者经常犯的错误!!
feof()这个函数是用来判断指针是否已经到达文件尾部的。 若fp已经指向文件末尾,则feof(fp)函数值为“真”,即返回非零值;否则返回0。
对呀!那有什么问题的呢?
其实feof() 这个函数是当读到文件结束符就返回 true 值,而非到文件最后一个字符,所以当读完文件最后一个字符时,如果后面还有换行或者空格的时候, 他会继续循环。所以就会多把最后循环一次。解决的方法其实很简单!!只需要把fgets放到while哪里判断就OK了!!
while (fgets(buffer,256,fp))
{
j++;
}
怎样?简单粗暴吧??
相关文章推荐
- C语言中关于文件的保存和读取的程序
- numpy关于文件中数据为混合类型的时候的读取
- c语言读取每一行,再将符合条件的写入另一个文件中。
- 关于文件的读取(整个读再print与读一行print一行)
- c语言读取txt文件的每一行
- C语言文件操作之--读取文件最后一行(通过fgets完成)
- c语言一行一行的读取txt文件
- C语言文件读取的时候,如何设置数组长度
- C语言从文本文件中用字符串读取一行数据,然后再依次遍历字符串将字符串中数据分配。
- c语言 读取文件的每一行; 查找指定key的value
- 在C语言当中关于读取文件时的"r""rb"区别
- .net 2.0 里面操作配置文件 的问题 (读取另外的配置文件的时候的疑问)
- 用C语言读取大文件的问题
- 两个关于.NET读取EXCEL文件的问题,记下来,感觉很有用
- c语言读取该文件内的数据
- 今天解决了两个关于.NET读取EXCEL文件的问题,记下来,很有用!
- 关于文件保存到数据库及其读取的方法
- 如何使用read命令读取文件的每一行
- C语言中关于文件操作的常用函数
- 读取excel文件的时候 出错提示:外部表不是预期的格式