精华内容
下载资源
问答
  • C语言文件读写(4)-判断文件是否结束
    千次阅读
    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
    更多相关内容
  • 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);
    	}
    }
    
    展开全文
  • 判断文件结束函数(feof)

    千次阅读 2013-05-25 16:26:22
    如果是文件结束函数feof(fp)的值为1(真),如果不结束,函数feof(fp)的值为0(假),feof函数判断二进制文件和文本文件的结束 例: 将一个文本文件数据复制到另一个文件中(前提是a.txt是已存在的文件) #...

    函数feof(fp//文件指针)用于测试fp所指向的文件内部位置指针是否指向文件结束。如果是文件结束,函数feof(fp)的值为1(真),如果不结束,函数feof(fp)的值为0(假),feof函数可判断二进制文件和文本文件的结束

    例:

    将一个文本文件数据复制到另一个文件中(前提是a.txt是已存在的文件)

    #include <stdio.h>
    int main()
    {
        FILE *fpin,*fpout;
        char ch;
        if((fpin = fopen("d:\\a.txt","rt")) == NULL)//打开源文件
        {
            printf("Cannot open a.txt\n");
        }
        if((fpout = fopen("d:\\b.txt","wt")) == NULL)//打开目标文件
        {
            printf("cannot open b.txt\n");
        }
        ch = fgetc(fpin); //读取原文件第一个字符
        printf("直接输出文件a的内容\n");
        while(!feof(fpin)) //判断源文件是否结束
        {
            putchar(ch);
            fputc(ch,fpout);
            ch = fgetc(fpin);
        }
        printf("\n");
        fclose(fpin);
        fclose(fpout);
        printf("\n将a文件复制到b文件中后,输出b文件的内容\n");
        if((fpout = fopen("d:\\b.txt","rt")) == NULL)
        {
            printf("Cannot open b.txt\n");
        }
        ch = fgetc(fpout);
        while(!feof(fpout))
        {
            putchar(ch);
            ch = fgetc(fpout);
        }
        fclose(fpout);
        printf("\n");
        return 0;
    }
    

    展开全文
  • 所以,出现了一类函数,它们的功能就是,判断文件操作函数是以一种什么方式结束。 注意:以下介绍的函数的功能不是判断文件操作函数是否调用失败,而是在文件操作函数已经调用失败的情况下,判断文件操作函数调用...

    前言

    文件操作函数(二)中,我们介绍了一系列的与文件的顺序读写有关的函数,它们调用成功与失败时的返回值各不相同,为了能更好地记忆这些函数,我们将这些函数的返回值进行了总结,并列入表格:

    函数调用成功时的返回值调用失败时的返回值
    fputc返回输出字符的ASCII码值EOF
    fgetc返回输入字符的ASCII码值EOF
    fputs非负值EOF
    fpets返回输入字符串的首地址NULL
    fprintf返回输出的字节个数负值
    fscanf成功转换和分配的字段数EOF
    fwrite要求写入的完整项的数目小于要求写入的完整项的数目
    fread要求读取的完整项的数目小于要求读取的完整项的数目

    这样一一列举出来后,看似已经非常清楚明了,实际却还有一些小细节:

    1. fgetc函数返回EOF时,可能是读取数据时发生错误,也可能是已经读取到文件末尾了。
    2. fgets函数返回NULL时,可能是读取数据时发生错误,也可能是已经读取到文件末尾了。
    3. fscanf函数返回EOF时,可能是读取数据时发生错误,也可能是在第一次转换之前到达文件流的末尾。
    4. fread函数返回的值小于要求读取的完整项的数目时,可能是读取数据时发生错误,也可能是在达到读取的规定数目之前遇到文件结尾。

    这些不同的情况返回的却是同一个值,当fgetc函数返回EOF时,我们不能断定一定是读取数据时发生错误了,当fscanf函数返回EOF时,我们也不能断定它就是文件读取结束了。所以,出现了一类函数,它们的功能就是,判断文件操作函数是以一种什么方式结束。

    注意:以下介绍的函数的功能不是判断文件操作函数是否调用失败,而是在文件操作函数已经调用失败的情况下,判断文件操作函数调用失败的原因。

    ferror函数

    int ferror( FILE *stream );
    

    ferror函数的功能就是判断使用某一文件指针的过程中,是否发生错误,若使用时没有发生错误,则ferror函数返回0;否则,ferror函数将返回一个非零的值。调用ferror函数时,我们只需将待检查的文件指针传入即可。

    	if (ferror)
    	{
    		printf("文件指针使用时,发生错误\n");
    	}
    

    feof函数

    int feof( FILE *stream );
    

    feof函数的功能也是判断使用某一文件指针的过程中,是否读取到文件末尾,若使用时没有读取到文件末尾,则feof函数返回0;否则,feof函数将返回一个非零的值。调用feof函数时,也只需将待检查的文件指针传入即可。

    	if (feof(pf))
    	{
    		printf("文件指针使用时,读取到文件末尾\n");
    	}
    

    ferror函数和feof函数搭配使用

    当前言中说到的文件操作函数调用失败时,我们就可以同时运用ferror函数和feof函数,来判断文件操作函数调用失败的准确原因。

    例如,文件data.txt文件中的数据为"abcdef",我们要用fgetc函数读取data.txt文件中的数据,当数据读取完之后,我们就可以用ferror函数和feof函数,来判断最后一次fgetc函数调用失败的原因:

    #include <stdio.h>
    #include <string.h>
    #include <errno.h>
    int main()
    {
    	//打开文件
    	FILE* pf = fopen("data.txt", "r");
    	if (pf == NULL)
    	{
    		printf("%s\n", strerror(errno));
    		return 1;//文件打开失败,失败返回
    	}
    	//读取文件中的数据
    	int ch = 0;
    	while ((ch = fgetc(pf)) != EOF)
    	{
    		printf("%c", ch);
    	}
    	if (ferror(pf))
    	{
    		printf("文件指针使用时,发生错误而结束\n");
    	}
    	else if (feof(pf))
    	{
    		printf("文件指针使用时,读取到文件末尾而结束\n");
    	}
    	//关闭文件
    	fclose(pf);
    	pf = NULL;
    	return 0;
    }
    
    展开全文
  • 使用feof()函数判断文件是否结束

    千次阅读 2019-07-08 21:08:47
    课本上时这样写的:(用putchar(ch);代表对取出来的字符的处理。...但是,这样写的话,fgetc()函数总是会多读入一个字符。 应该改为如下形式: 1 ch=fgetc(fp); 2 while(!feof(fp)) 3 { ...
  • 文件结束判定与feof函数

    千次阅读 多人点赞 2019-06-18 17:14:29
    文件结束判定与feof函数 目录 文件结束判定: 方法1 :fget()函数返回EOF 方法2 :fgets()返回NULL 方法3 :利用文件长度 方法4 : 二进制文件利用fread()返回值 ...
  • C语言文件读取结束判断正确方式

    千次阅读 2021-03-23 18:18:18
    即在文件读取过程中,避免用feof函数的返回值来判断文件读取是否结束,而是应用于当前文件读取结束时,判断时读取结束还是遇到文件尾结束 1.如何正确判断文件是否结束 对于任意的流操作函数,都有对应的返回值来 如...
  • 判断文件结束的几种方法和eof()函数

    万次阅读 2016-04-29 13:07:16
    ,需要注意到是先读文件结束符,eofbit才能置为false,eof()函数才会返回true。所以,在使用时,为了避免错误的情况,可以这样使用: while   ( true )  {  ifs>>x;  if (ifs.eof())...
  • C语言文件操作函数大全

    万次阅读 多人点赞 2018-01-19 20:35:35
    C语言文件操作函数大全 2018-1-19  13.1C语言文件 1,两种文件存取方式(输入,输出方式) 顺序存取 直接存取 2,数据的两种存放形式 文本文件 二进制文件 13.2文件指针 定义文件类型指针变量的一般...
  • Matlab之测试文件结尾函数feof

    千次阅读 2020-12-17 11:22:22
    如果先前的操作为指定文件设置了文件结束指示符,则返回1。 否则,feof返回0。 fileID是从fopen获得的整数文件标识符。 注:打开一个空文件不会设置文件结束指示符。 4.示例 fid = fopen('bench.dat'); k = 0; ...
  • 之前做的一个项目需要读取一个文件中的数据,文件中的数据类型确定,大小不确定,每次读取完文件要计算出...判断文件结尾,结尾返回非零值,否则返回零值。 fscanf 函数原型:int fscanf (FILE *stream, char *forma...
  • 例子:从键盘输入若干行字符(每行长度不等),输入后把它们存储到一磁盘文件中。...1.使用feof()函数 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 int mai...
  • with open('awod.txt','rb') as f: print(f.seek(0,2))
  • 当以文本方式读写文件时,可以用EOF判断文件是否结尾,因为EOF=-1,而字符的ASCII码不可能为负数。 例如,当fp为文本方式读取的指针时getc(fp)!=EOF可判断是否读到文件结尾当以二进制方式读写文件时,只能用feof...
  • 多数函数(fgets()、gets()、putc()、ungetc()、fread()等)当调用不成功时都返回EOF,EOF的值为0,它既用于报告文件结束,也用于报告错误情形下的返回。因此,为了区分究竟是错误返回还是文件结束返回,就需要调用...
  • 一、readline函数 按行遍历读取文件的方法,通过这个方法,readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline() filename = raw_input('...
  • matlab 编写M文件函数

    千次阅读 2021-04-18 05:45:33
    matlab的命令编辑窗口(Command Window)界面主要是用来调用系统命令、调用自定义函数(m文件里定义的函数)或编写一些较小的代码。在遇到需要用到比较多的代码才能摆平的需求时,在命令编辑窗口每一行都有提示输入符号...
  • #include #include int main() { FILE *fp; char ch; fp=fopen("./tmp/text2.txt","r"); ch=fgetc(fp);...// 函数feod(fp):当前位置指针指向文件末尾时返回0,返回非零值 while(!feof(fp))// { p
  • 判断文件结束有两种方法:EOF和feof()   查看stdio.h可以看到如下定义: [cpp] view plaincopyprint? #define EOF (-1) #define _IOEOF 0x0010 #define feof(_stream) ((_stream)->_flag...
  • PHP操作文件的常用函数

    千次阅读 2019-06-21 01:17:36
    文章目录fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] ) : resource 打开文件或者 URLfwrite ( resource $handle , string $string [, int $length ] ) : ...
  • C语言文件读取函数

    千次阅读 2019-09-02 22:04:07
    相关函数 fgets 读取一行 feof 判断文件是否结束 fopen 打开文件 返回一个文件指针 fgetc 读取一个字节
  • 关于C语言feof()函数判断文件结尾的问题分析

    千次阅读 多人点赞 2017-12-04 01:12:42
    相信很多C语言初学者都遇到过这种情况: ...实际上这并非feof()函数的bug,只是我们不了解feof()函数的性质。 feof()的性质: 只有当文件位置指针指向文件末尾,再发生读/写操作,然后再调用feof()时,才会得到...
  • C语言文件操作函数详解

    千次阅读 多人点赞 2018-08-26 23:20:43
    C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数... 文件的打开操作 fopen 打开一个文件  文件的关闭操作 fclose 关闭一个文件  文件的读写操作 fgetc 从文件中读取一个字符  ...
  • C语言读取文件判断是否读取结束

    千次阅读 2019-09-07 15:44:16
    读取文件时,判断内容是否已经为空当目前所读取的字符为EOF时说明后面内容为空或者直接使用feof()函数 当目前所读取的字符为EOF时说明后面内容为空 char ch; FILE* fp=fopen(********); ch=fgetc(fp); if(ch==EOF) ...
  • 功 能: 检测流上的文件结束符 用 法: int feof(FILE *stream); feof - 程序例 #include int main(void) {  FILE *stream;  /* open a file for reading */  stream = fopen("DUMMY....
  • 如何判断文件是否读到文件结尾

    万次阅读 2017-04-10 22:32:44
    头文件:#include #define feof(_stream) ((_stream)->_flag & _IOEOF)feof()函数用来检测当前文件流上的文件结束标识,判断是否读到了文件结尾,其原型为: int feof(FILE * stream);【参数】stream为文件流指针...
  • C语言中如何判断文件结尾

    万次阅读 2017-03-05 21:50:03
    使用标准库函数feof()可判断是否到达文件结尾:#include int feof(FILE *fp)返回值: 文件结束返回非0,否则返回0。 例如FILE *fp = fopen(“test.txt”, “r”);if (feof(fp)) { printf(“end of file”); }
  • C语言如何判断输入结束

    千次阅读 2020-08-24 02:15:44
    目录为什么要判断输入是否结束一、输入函数自带的结束标志二、自定义结束标志符三、利用输入函数的返回值做结束标志1.Windows系统中键入EOF**“行首”、“Ctrl-Z组合键”、“↙”**2.Linux系统中键入EOF 为什么要...
  • C++ Cin判断输入结束

    千次阅读 2019-06-11 21:42:44
    若是从文件中读取数据,到达文件末尾就读取结束了。从控制台读取数据时,可以通过输入特殊的控制字符: 在window系统中,通过键盘输入时,按Ctrl+Z组合键后再按回车键,就代表输入结束。 在UNIX/Linux/Mac OS系统...
  • c语言read函数读到什么结束

    千次阅读 2021-05-18 14:33:42
    linux下c语言编程read()函数的问题返回-1的时候,要根据错误码来判断原因,请看下面的函数说明: 表头文件 #include 定义函数 ssize_t read(int fd,void * buf ,size_t count); 函数说明 read()会把参数fd 所指的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 376,889
精华内容 150,755
关键字:

判断文件结束函数