关于C语言读取文件时候多读一行

梗概:为什么C语言读取文件到结构体时为什么整天多读一行?一切都是【!feof(fp)】的错!!!

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语言读取文件时候多读一行,布布扣,bubuko.com

时间: 2024-10-14 08:17:57

关于C语言读取文件时候多读一行的相关文章

R语言读取文件数据

R语言读取文件数据 ??1.read.table()函数 2.其他函数的缺省 read.csv(file, header = TRUE, sep = ",", quote="\"", dec=".",fill = TRUE, ...)read.csv2(file, header = TRUE, sep = ";", quote="\"", dec=",",fill =

类似于c语言读取文件进行解析

$log_file_name = 'D:/static/develop/kuai_zhi/acagrid.com/public/Logs/'.date('Ym').'/'.date('d').'_error.log';            //$log_file_name = 'D:/static/develop/kuai_zhi/acagrid.com/public/Logs/201701/19_error.log';                   if(!file_exists($l

C语言读取文件

1.首先我们要在D盘下新建一个文本文件(文件名为:AAA.txt),并在文件里面写入任意字符,如果没有此文件会因为找不到文件而造成文件打开失败. 2.运行程序,将文件内的字符逐个读取输出到屏幕上 3.若打开文件失败,则如下图所示,此时应检查文件路径是否正确 fopen函数说明: 作用:用来打开一个文件 格式:FILE * fopen(const char * path,const char * mode); 返回值:打开文件成功返回一个文件指针,若打开文件失败则返回NULL 参数说明: path

C语言读取文件大量数据到数组

针对.txt文档的大量有规律数据,譬如100行8列的数据将其读取到二维数组(矩阵)中,留作之后的数据处理. 改程序通过宏定义的方法来确定将要读取程序的行数和列数,将数据读取到二维数组data[100][8]中. 同时加入一个测试函数read(),功能是可以获取txt文档大量数据的行数,本项目中待定使用. 程序如下: #include<stdio.h> #include<stdlib.h> /* 为了以后特定行数的读取,采用宏定义的方法来确定行数 程序中read()读取该文件的行数,

java中读取文件以及向文件中追加数据的总结

1 package gys; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileInputStream; 6 import java.io.FileReader; 7 import java.io.FileWriter; 8 import java.io.IOException; 9 import java.io.InputStream; 10 import java.io.InputSt

python 读取文件 并实现文件相关操作最后导出excel

今天做了一个使用python来提取日志内容,并导出excel的小脚本,代码写的不好,新手勿喷,下面进行一下总结. 需求如下: 1.读取文件行数,并作出excel表 2.读取文件中第7个字段,累加求和,求平均数.并找出其中最大的.做excel表. 3.找出文件中特定字符出现次数,统计,做excel表. 4.自动生成excel名称为实时时间. 读取文件行数第一想法就是 wc -l,虽然python中可以调用shell命令,但毕竟不太好,所以这里用python逐行读取文件并进行累加,算出文件行数...

HDFS读文件过程分析:读取文件的Block数据

转自http://shiyanjun.cn/archives/962.html 我们可以从java.io.InputStream类中看到,抽象出一个read方法,用来读取已经打开的InputStream实例中的字节,每次调用read方法,会读取一个字节数据,该方法抽象定义,如下所示:public abstract int read() throws IOException;Hadoop的DFSClient.DFSInputStream类实现了该抽象逻辑,如果我们清楚了如何从HDFS中读取一个文件

C语言:字符串读取流读取文件中的数据

#include<stdio.h> int main() { //定义文件指针 FILE *f = NULL; //打开文件 f = fopen("1.txt","r"); if(f==NULL) { printf("文件读取失败!\n"); return -1; } //读文件 const int SIZE = 100; char buf[SIZE];//用字符数组做读文件的缓冲区 while(!feof(f)) { //字符串方式

fstream读取文件时如何判断读到文件尾

使用fstream读取文件,什么时候读到文件结束呢.首先想到的是,将现在的位置与文件的长度对比,然后再fstream中无法直接获取文件长度.可以采用如下方法 fstream in; in.open("path",ios::in); in.seekg(0,ios::end); int length=in.tellg(); in.seekg(0.ios::beg); whiel(in.tellg()<length) { dosomething; } 这样是不是有点麻烦,在网上查了一圈