精华内容
下载资源
问答
  • 如何判断文件是否结束
    千次阅读
    2020-07-01 08:37:33

    C语言文件读写-判断文件是否结束

    在读文件的时候,很重要的一个条件是:文件是否结束,因为文件已经结束了,就不用继续读文件了。

    判断文件结束,有许多方式,比如读取文本文件和二进制文件就可以使用不同的方式,下面分别进行详细介绍和举例。

    使用EOF判断文件是否结束

    EOF的值为-1,所以往往使用EOF也可以判断文件是否结束,一般用在非格式化文本文件读取中,如果在格式化文本读取时使用EOF来判断,在某些情况下是会出错的。

    函数fgetc返回的值为一个字符,当文件结束时,返回EOF,因为文本文件中可打印字符没有字符的值是-1,所以,可以用EOF来判断文件是否结束了。

    这也是唯一的一个可以使用EOF来判断文件是否结束,而且永远正确的函数,前提是必须是读文本文件(格式化或者非格式化都可以支持)。

    我们来看一下使用fgetc和EOF来检测文件是否结束的例子,代码如下:

    void EOF_test_getc(const char* file_name)
    {
    	int ch = 0;
    	int count = 0;
    	FILE *file = fopen(file_name,"r");
    	if(!file)
    		return;
    	while(1)
    	{
    		ch = fgetc(file);
    		if(ch == EOF)
    		{
    			printf("reach the end of file,the char number is %d\n",count);
    			break;
    		}
    		else
    		{
    			count++;
    			putchar(ch);
    		}
    	}
    	fclose
    更多相关内容
  • 在循环判断文件是否结束时可以直接把输入流放在循环条件,但是这里补充使用eof()的一些细节问题。这是关于到底什么时候标志位才会变化的问题。 ifstream fin("/home/daibo/桌面/evo工具/groundtruth.txt"); fin.eof...

    在循环判断文件是否结束时可以直接把输入流放在循环条件,但是这里补充使用eof()的一些细节问题。这是关于到底什么时候标志位才会变化的问题。

    ifstream fin("/home/daibo/桌面/evo工具/groundtruth.txt");
    fin.eof();
    

    fin.eof()判断不合常理,按照正常逻辑,如果到了文件末尾 ,那fin.eof()应返回真。C++输入流ifstream如何知道是否已经到达文件末尾,原来它根据的是: 如果fin不能再读入数据,才发现已经到达文件结尾,这时才给流设定文件结尾的标志,此后调用eof(),才返回真。

    vector<vector<double>> vecs;
    for (int i = 0;; i++)
        {
            if (fin.eof())
            {
                cout << "read over " << endl;
                break;
            }
            vector<double> vec(8,0); //获取每行数据
            for (auto & d : vec)
            {
                fin >> d;//双向影响
            }
            vecs.push_back(vec);
        }
    

    我们会发现vecs读取groundtruth.txt时多读取了一行数据,多出的这行数据是初始化的vector vec(8,0),修改上述的程序如下,避免出现多出一行数据。

    vector<vector<double>> vecs;
    for (int i = 0;; i++)
        {
            vector<double> vec(8,0); //获取每行数据
            for (auto & d : vec)
            {
                fin >> d;//双向影响
            }
            if (fin.eof())
            {
                cout << "read over " << endl;
                break;
            }
            vecs.push_back(vec);
        }
    

    转载自链接: 明镜止水.

    展开全文
  • 使用feof()函数判断文件是否结束

    千次阅读 2019-07-08 21:08:47
    feof(fp)为假,判断文件结束,其实文件在前一次循环中已经结束了。 代码还可以这样写: 1 ch= fgetc(fp); 2 while (ch!= EOF) 3 { 4 putchar(ch); 5 ch= fgetc(fp); 6 } 处理文本文件,在...

    课本上时这样写的:(用putchar(ch);代表对取出来的字符的处理。)

    1 while(!feof(fp))
    2 {
    3     ch=fgetc(fp);
    4     putchar(ch);
    5 }

    但是,这样写的话,fgetc()函数总是会多读入一个字符。

    应该改为如下形式:

    1 ch=fgetc(fp);
    2 while(!feof(fp))
    3 {
    4     putchar(ch);
    5     ch=fgetc(fp);
    6 }

    只有当从文件输入“文件结束符”后,才能使用feof(fp)函数判断文件是否结束。

    课本上的代码是这样运行的:使用ch=fgetc(fp);从文件读入了文件结束符,然后输出文件结束符(-1)对应的字符(其实是乱码,没有ASCII为-1的字符),然后再根据!feof(fp)为假,判断文件结束,其实文件在前一次循环中已经结束了。

    代码还可以这样写:

    1 ch=fgetc(fp);
    2 while(ch!=EOF)
    3 {
    4     putchar(ch);
    5     ch=fgetc(fp);
    6 }

    处理文本文件,在判断文件是否结束时,两种方法:ch!=EOF;或者!feof(fp);除了这两个表达式之外的其它代码不要变动。

    处理二进制文件,只能使用!feof(fp)判断文件是否结束。

    转载于:https://www.cnblogs.com/Camilo/p/3379538.html

    展开全文
  • C语言-概念-判断文件结束函数feof

    千次阅读 2020-05-14 23:09:39
    判断文件结束函数feof 例C语言-概念-调用getc(fgetc)和putc(fputc)函数进行输入和输出中,程序从一个磁盘文件中逐个读取字符并输出到屏幕上显示,在while循环中以EOF作为文件结束的标志。这种以EOF作为文件结束...

    判断文件结束函数feof

    C语言-概念-调用getc(fgetc)和putc(fputc)函数进行输入和输出中,程序从一个磁盘文件中逐个读取字符并输出到屏幕上显示,在while循环中以EOF作为文件结束的标志。这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束的标志。
    当把数据以二进制形式存放到文件中时,就会有-1值的出现,此时不能采用EOF作为二进制文件结束的标志。为解决这一个问题,ANSI C提供一个feof函数,用来判断文件是否结束。如果遇到文件结束,函数feof(fp)的值为1,否则为0。feof函数既可用以判断二进制文件是否结束,也可用以判断文本文件是否结束。
    编写程序,用于把一个文本文件(源文件)复制到另一个文件(目标文件)中。源文件名为file_a.dat,目标文件名为file_b.dat。程序如下:

    #include<stdio.h>
    void filecopy(FILE *,FILE *);
    main()
    {
    	FILE *fpin,*fpout;
    	fpin=fopen("file_a.dat","r");//打开输入文件
    	fpout=fopen("file_b.dat","w");//打开输出文件
    	filecopy(fpin,fpout);//把fpin所指文件中的内容输出到fpout所指文件中
    	fclose(fpin);//关闭输入文件
    	fclose(fpout);//关闭输出文件
    }
    void filecopy(FILE *fpin,FILE *fpout)
    {
    	char ch;
    	ch=getc(fpin);//先读一次文件再去判断文件是否结束
    	while(!feof(fpin))//当未到文件末尾时进行循环
    	{//逐个字符进行复制
    		putc(ch,fpout);
    		ch=getc(fpin);
    	}
    }
    
    展开全文
  • with open('awod.txt','rb') as f: print(f.seek(0,2))
  • C语言文件读取结束判断正确方式

    千次阅读 2021-03-23 18:18:18
    前言 对于在文件操作时,怎么样判断文件是否结束,以feof来判断文件读取结束是否正确? 一、MSDN对feof的介绍? 对与返回值的描述是: feof函数在第一次读取操作后返回一个非零值,该操作试图读取文件的末尾。如果...
  • C语言读取文件判断是否读取结束

    千次阅读 2019-09-07 15:44:16
    读取文件时,判断内容是否已经为空当目前所读取的字符为EOF时说明后面内容为空或者直接使用feof()函数 当目前所读取的字符为EOF时说明后面内容为空 char ch; FILE* fp=fopen(********); ch=fgetc(fp); if(ch==EOF) ...
  • c++判断文件结束的方法

    千次阅读 2021-03-16 22:24:47
    do { } while(file.eof()); 这种结构,文件最后的行会重复读取?原因是什么? while(file) { } 这种结构似乎正常。
  • 一、前言java读取文件时,如果到达文件末尾,再进行读取时会发生异常,所以我们需要判断读取文件已经到达末尾。对于文件读取我们通常会采用不同的读取方式,如用...1或者null,下面具体上面几次方式符合判断文件是...
  • Java判断文件是否写入完成

    千次阅读 2020-09-13 12:53:53
    Java判断文件是否写入完成 在实现文件监听时,当有文件上传时,会立即监听到,并且会进行操作。若文件传输未完成,此时取到的文件就是非完整文件,这时如果对文件进行操作,就可能出现一些未知的错误,如转Base64就...
  • 判断文件结束函数(feof)

    千次阅读 2013-05-25 16:26:22
    函数feof(fp//文件指针)用于测试fp所指向的文件内部位置指针是否指向文件结束。如果是文件结束,函数feof(fp)的值为1(真),如果不结束,函数feof(fp)的值为0(假),feof函数可判断二进制文件和文本文件的...
  • 文件结束判定与feof函数

    千次阅读 多人点赞 2019-06-18 17:14:29
    文件结束判定与feof函数 目录 文件结束判定: 方法1 :fget()函数返回EOF 方法2 :fgets()返回NULL 方法3 :利用文件长度 方法4 : 二进制文件利用fread()返回值 ...
  • 按行遍历读取文件的方法,通过这个方法,readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline() filename = raw_input('Enter your file ...
  • 判断文件结束的几种方法和eof()函数

    万次阅读 2016-04-29 13:07:16
    因此,平时在判断文件是否结束 使用到eof()函数时 ,需要注意到是先读文件结束符,eofbit才能置为false,eof()函数才会返回true。所以,在使用时,为了避免错误的情况,可以这样使用: while   ( true ) ...
  • 最主要的还是判断十个进程是否都已结束 问题补充: 但是执行完了我用isAlive属性来判断,进程还是处于Runable 满意回答 在class ReadFileThread implements Runnable { 设置一个静态变量count public static int ...
  • C/C++中读取文件判断是否读取结束

    万次阅读 2016-11-22 16:16:41
    最近用C++读取文件时遇到了一个问题,读取如下图所示的文件时,使用C中的feof()判断是否读取结束,总会在文件末尾处总会多读一遍。 可以看到我读取的文件格式是比较简单的,没两行为一对,第一行有两个int类型的...
  • 判断输入结束的简单方式 1. 从键盘输入 1.最简单的方式,while(cin&gt;&gt;a){…},当想结束时只需 换行+输入Ctrl+Z+回车,此时cin&gt;&gt;a的返回值为false。 例1.初始化字符数组 #include&...
  • 说明: EOF是文本文件结束的标志。...为解决这一个问题,ASCIC提供了feof()函数,用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件。feof(fp)如果文件结束则返回非0值,否则返回0。
  • MATLAB判断文件是否存在、删除文件

    千次阅读 2020-04-01 15:01:51
    MATLAB判断文件是否存在: exist('output.txt','file') 如果output.txt存在,返回2,若不存在返回0 MATLAB删除文件: delete('output.txt');
  • 判断文件是否写入完毕

    万次阅读 2016-05-11 15:29:51
    在对文件进行读取,复制等操作前,往往需要去判断文件是否已经完全写入完毕,如果这个文件的写入操作是在你自己写的代码里,那么可以通过自己添加一些标志位来获取当前文件的写入状态,但是如果文件的写操作并非是你...
  • 关于文件结束符EOF EOF 是 End Of File 的缩写。 在C语言中,它是在标准库中定义的一个宏。 人们经常误认为EOF 是从文件中读取的一个字符(牢记)。其实,EOF 不是一个字符,它被定义为是 int 类型的一个负数...
  • 如何判断文件已上传

    千次阅读 2019-06-25 09:33:46
    文章目录目标方法判断文件大小判断文件的md5值判断整个文件的md5值判断文件末尾几位数判断文件句柄判断最后修改时间方法1:判断Modify Time与Change Time是否相等方法2:判断Modify Time与Change Time是否小于某个数...
  • 如何判断文件是否读到文件结尾

    万次阅读 2017-04-10 22:32:44
    头文件:#include #define feof(_stream) ((_stream)->_flag & _IOEOF)feof()函数用来检测当前文件流上的文件结束标识,判断是否读到了文件结尾,其原型为: int feof(FILE * stream);【参数】stream为文件流指针...
  • /// 查看文件是否被占用 /// /// <param name="filePath"></param> /// <returns></returns> public static bool IsFileOccupied(string filePath) { IntPtr vHandle = _lopen(filePath, OF_READWRITE | OF_...
  • C++ 读取结束判断

    千次阅读 2020-03-18 09:18:57
    在输入数据的多少不确定,且没有结束标志的情况下,该如何判断输入数据已经读完了呢? 从文件中读取数据很好办,到达文件末尾就读取结束了。从控制台读取数据怎么办呢?总不能把控制台关闭吧?这样程序也运行结束了...
  • Java判断上传文件是否重复

    千次阅读 2018-12-19 16:31:51
    近期的项目中接到一个需求,文件...要判断文件是否重复,就需要对每次上传的文件计算MD5值,上传前通过查询文件库中是否存在该MD5值,来判断是选择上传还是直接复制已存在的文件路径。 方法一: 使用org.apache.comm...
  • java判断文件是否正在写入

    万次阅读 2017-12-15 00:00:50
    Flink批处理时,遇到一个场景:flink在分析日志文件时,如果日志文件已经存在,flink则会正确读取并分析日志文件。这里问什么说正确读取呢?假设,日志文件很大,大到100M,在慢网络情况下,将日志文件发送到slave...
  • /**判断流程是否结束,查询正在执行的执行对象表*/ ProcessInstance rpi = processEngine.getRuntimeService() // .createProcessInstanceQuery() //创建流程实例查询对象 .processInstanceId(pi.getId()) ....
  • 前言 最近在使用subprocess遇到个问题...使用subprocess的Popen类来执行shell命令,要怎么样才能知道命令执行结束了,以此来执行回调方法。 解决办法 使用subprocess.Popen.poll方法来获取命令的执行情况。 poll...
  • 目录 一、通过复制方法创建文件或目录 二、通过新建方法创建文件和目录 ...echo result.jtl文件判断 SET SourceFile=G:\Jmeter\apache-jmeter-5.0\report\backup\result.jtl SET GenFile=G:\Jmeter\apache-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 652,910
精华内容 261,164
关键字:

如何判断文件是否结束