精华内容
下载资源
问答
  • 本文实例讲述了PHP中的feof()函数的用法,针对feof()函数进行了一定的测试,很有实用价值。具体分析如下: 本文实例运行环境: OS:Mac OS X 10.8.4 PHP:5.3.15 在PHP的官方手册中,函数feof()下面的讨论不少,对此...
  • 主要介绍了PHP使用feof()函数读文件的方法,以实例形式对比了正确与错误的用法,阐明了feof()函数的使用技巧,需要的朋友可以参考下
  • feof fp 是什么意思

    2013-10-14 15:09:36
    介绍c++builder语言feof fp 是什么意思
  • feof函数多读一次问题分析,详细讲解为什么会多读一次原因
  • VERILOG | feof

    千次阅读 2020-02-22 10:21:09
    注意:feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。比如,在while循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行...

    注意feof判断文件结束是通过读取函数fread/fscanf等返回错误来识别的,故而判断文件是否结束应该是在读取函数之后进行判断。比如,在while循环读取一个文件时,如果是在读取函数之前进行判断,则如果文件最后一行是空白行,可能会造成内存错误。

    https://blog.csdn.net/Chauncey_wu/article/details/90289749

    1.打开文件

      integer file_id;

      file_id = fopen("file_path/file_name");

    2.写入文件:$fmonitor,$fwrite,$fdisplay,$fstrobe

      //$fmonitor只要有变化就一直记录

      $fmonitor(file_id, "%format_char", parameter);

      $fmonitor(file_id, "%m: %t in1=%d o1=%h", $time, in1, o1);

    //$fwrite需要触发条件才记录

      $fwrite(file_id, "%format_char", parameter);

    //$fdisplay需要触发条件才记录

      $fdisplay(file_id, "%format_char", parameter);

    $fstrobe();

    3.读取文件:$fread

      integer file_id;

      file_id = $fread("file_path/file_name", "r");

    4.关闭文件:$fclose

      $fclose(fjile_id);

    5.由文件设定存储器初值:$readmemh,$readmemb

      $readmemh("file_name", memory_name"); //初始化数据为十六进制

      $readmemb("file_name", memory_name"); //初始化数据为二进制

    6、文件显示:$monitor,$write,$display

     $display,$write用于输出信息

      $display("rvel = %h hex %d decimal",rvel,rvel);

      $monitor($time, ,"rxd = %b txd = %b",rxd ,txd)

    6、文件定位

      $fseek,文件定位,可以从任意点对文件进行操作;

      $fscanf,对文件一行进行读写。

    7、退出仿真器$finish

    8、随机数据产生:$random

     
    1. 下面是一些常见的应用:

    2. 1、读写文件

    3. `timescale 1 ns/1 ns

    4. module FileIO_tb;

    5. integer fp_r, fp_w, cnt;

    6. reg [7:0] reg1, reg2, reg3;

    7. initial begin

    8. fp_r = $fopen("data_in.txt", "r");

    9. fp_w = $fopen("data_out.txt", "w");

    10.  
    11. while(!$feof(fp_r)) begin

    12. cnt = $fscanf(fp_r, "%d %d %d", reg1, reg2, reg3);

    13. $display("%d %d %d", reg1, reg2, reg3);

    14. $fwrite(fp_w, "%d %d %d\n", reg3, reg2, reg1);

    15. end

    16.  
    17. $fclose(fp_r);

    18. $fclose(fp_w);

    19. end

    20. endmodule

    21. 2、

    22. integer file, char;

    23. reg eof;

    24. initial begin

    25. file = $fopenr("myfile.txt");

    26. eof = 0;

    27. while (eof == 0) begin

    28. char = $fgetc(file);

    29. eof = $feof (file);

    30. $display ("%s", char);

    31. end

    32. end

    33. 3、文件处理定位

    34. `define SEEK_SET 0

    35. `define SEEK_CUR 1

    36. `define SEEK_END 2

    37. integer file, offset, position, r;

    38. r = $fseek(file, 0, `SEEK_SET);

    39. r = $fseek(file, 0, `SEEK_CUR);

    40. r = $fseek(file, 0, `SEEK_END);

    41. r = $fseek(file, position, `SEEK_SET);

    42.   4、

    43. integer r, file, start, count;

    44. reg [15:0] mem[0:10], r16;

    45. r = $fread(file, mem[0], start, count);

    46. r = $fread(file, r16);

    47.   5、

    48. integer file, position;

    49. position = $ftell(file);

    50. 6、

    51. integer file, r, a, b;

    52. reg [80*8:1] string;

    53. file = $fopenw("output.log");

    54. r = $sformat(string, "Formatted %d %x", a, b);

    55. r = $sprintf(string, "Formatted %d %x", a, b);

    56. r = $fprintf(file, "Formatted %d %x", a, b);

    57. 7、

    58. integer file, r;

    59. file = $fopenw("output.log");

    60. r = $fflush(file);

    61. 8、

    62. // This is a pattern file - read_pattern.pat

    63. // time bin dec hex

    64. 10: 001 1 1

    65. 20.0: 010 20 020

    66. 50.02: 111 5 FFF

    67. 62.345: 100 4 DEADBEEF

    68. 75.789: XXX 2 ZzZzZzZz

    69. `timescale 1ns / 10 ps

    70. `define EOF 32'hFFFF_FFFF

    71. `define NULL 0

    72. `define MAX_LINE_LENGTH 1000

    73.  
    74. module read_pattern;

    75. integer file, c, r;

    76. reg [3:0] bin;

    77. reg [31:0] dec, hex;

    78. real real_time;

    79. reg [8*`MAX_LINE_LENGTH:0] line;

    80.  
    81. initial

    82. begin : file_block

    83. $timeformat(-9, 3, "ns", 6);

    84. $display("time bin decimal hex");

    85. file = $fopenr("read_pattern.pat");

    86. if (file == `NULL) // If error opening file

    87. disable file_block; // Just quit

    88.  
    89. c = $fgetc(file);

    90. while (c != `EOF)

    91. begin

    92.  
    93. if (c == "/")

    94. r = $fgets(line, `MAX_LINE_LENGTH, file);

    95. else

    96. begin

    97. // Push the character back to the file then read the next time

    98. r = $ungetc(c, file);

    99. r = $fscanf(file," %f:\n", real_time);

    100.  
    101. // Wait until the absolute time in the file, then read stimulus

    102. if ($realtime > real_time)

    103. $display("Error - absolute time in file is out of order - %t",

    104. real_time);

    105. else

    106. #(real_time - $realtime)

    107. r = $fscanf(file," %b %d %h\n",bin,dec,hex);

    108. end // if c else

    109. c = $fgetc(file);

    110. end // while not EOF

    111.  
    112. r = $fcloser(file);

    113. end // initial

    114.  
    115. // Display changes to the signals

    116. always @(bin or dec or hex)

    117. $display("%t %b %d %h", $realtime, bin, dec, hex);

    118.  
    119. endmodule // read_pattern

    120. 9、自动比较输出结果

    121. `define EOF 32'hFFFF_FFFF

    122. `define NULL 0

    123. `define MAX_LINE_LENGTH 1000

    124. module compare;

    125. integer file, r;

    126. reg a, b, expect, clock;

    127. wire out;

    128. reg [`MAX_LINE_LENGTH*8:1];

    129. parameter cycle = 20;

    130.  
    131. initial

    132. begin : file_block

    133. $display("Time Stim Expect Output");

    134. clock = 0;

    135.  
    136. file = $fopenr("compare.pat");

    137. if (file == `NULL)

    138. disable file_block;

    139.  
    140. r = $fgets(line, MAX_LINE_LENGTH, file); // Skip comments

    141. r = $fgets(line, MAX_LINE_LENGTH, file);

    142.  
    143. while (!$feof(file))

    144. begin

    145. // Wait until rising clock, read stimulus

    146. @(posedge clock)

    147. r = $fscanf(file, " %b %b %b\n", a, b, expect);

    148.  
    149. // Wait just before the end of cycle to do compare

    150. #(cycle - 1)

    151. $display("%d %b %b %b %b", $stime, a, b, expect, out);

    152. $strobe_compare(expect, out);

    153. end // while not EOF

    154.  
    155. r = $fcloser(file);

    156. $stop;

    157. end // initial

    158.  
    159. always #(cycle / 2) clock = !clock; // Clock generator

    160.  
    161. and #4 (out, a, b); // Circuit under test

    162. endmodule // compare

    163. 10、从文件中读数据到mem(这个好像一般人用的最多了)

    164. `define EOF 32'HFFFF_FFFF

    165. `define MEM_SIZE 200_000

    166. module load_mem;

    167. integer file, i;

    168. reg [7:0] mem[0:`MEM_SIZE];

    169. reg [80*8:1] file_name;

    170. initial

    171. begin

    172. file_name = "data.bin";

    173. file = $fopenr(file_name);

    174. i = $fread(file, mem[0]);

    175. $display("Loaded %0d entries \n", i);

    176. i = $fcloser(file);

    177. $stop;

    178. end endmodule // load_mem

     

    展开全文
  • feof(f)){<!-- -->  c=(data*)malloc(sizeof(data)); //分配空间   fscanf(f,"%d %s %s %s %s %d %d %d %.1f %d %d %d %d %.1f",&c->number,c->name,c->sex,c->adds,c-&...
  • feof ()函数用来确定是否到达资源末尾。它在文件I/O 操作中经常使用。其形式为: int feof(string resource) 实例如下: 复制代码 代码如下: <?php $fh = fopen(“/home/www/data/users.txt”, “rt”); ...
  • 文件结束判定与feof函数

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

    文件结束判定与feof函数

    目录

                       文件结束判定:
                       方法1 :fget()函数返回EOF
                       方法2 :fgets()返回NULL
                       方法3 : 利用文件长度
                       方法4 : 二进制文件利用fread()返回值
                       feof函数
                       方法5:利用feof函数判断 


    EOF(End of file)是C/C++里面的宏定义,具体定义式是#define EOF -1
    EOF是文件结束标志
    但是, EOF并不是真实存在于文件末尾的一个数据, 若读取到文件末尾的时候, 即没有数据可供读取的时候, 读文件函数fgetc就会返回EOF值。(fgets函数会返回NULL)

    所以判断文件是否到末尾可以利用函数的返回值, 例如:


     方法1 :fget()函数返回EOF

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    int main() {
    	FILE* fp;
    	int count = 0;
    	if ((fp = fopen("test2.txt", "r")) == NULL) {
    		printf("error\n");
    		system("pause");
    		return 0;
    	}
    	while (fgetc(fp)!=EOF) {
    		count++;
    	}
    	printf("%d\n", count);
    	system("pause");
    	return 0;
    }

    可以看到test2.txt有10个字符, 循环次数也是10
     

    这种方法可以判定文件是否结束, 但需要不停地循环调用函数, 在执行效率较低


    方法2 :fgets()返回NULL

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    int main() {
    	FILE* fp;
    	int i;
    	char str1[4];
    	char str2[4];
    	char str3[4];
    	char str4[4];
    	char* str[4] = { str1,str2,str3,str4 };
    	if ((fp = fopen("test2.txt", "r")) == NULL) {
    		printf("error\n");
    		system("pause");
    		return 0;
    	}
    	for (i = 0; fgets(str[i], 4, fp) != NULL; ++i) { 
    		printf("str%d : %s\n", i + 1, str[i]);
    	}
    	printf("i = %d\n", i);
    	system("pause");
    	return 0;
    }

    可以看到10个字符,fgets函数一次读三个字符, 读了四次完成, 读到文件末尾返回NULL

           


    方法3 : 利用文件长度

    利用fseek()ftell()函数计算出文件长度(大小)
    链接: fseek()和ftell()函数

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    int main() {
    	FILE* fp;
    	int n;
    	char str[12] = { 0 };
    	if ((fp = fopen("test2.txt", "r")) == NULL) {
    		printf("error\n");
    		system("pause");
    		return 0;
    	}
    	//
    	fseek(fp, 0, 2);//fp到文件末尾
    	n = ftell(fp);//fp到文件开头的偏移量, 这里就是文件长度
    	rewind(fp);//fp重新指向文件开头
    	//
    	for (int i = 0; ftell(fp) != n; ++i) {
    		str[i] = fgetc(fp);
    	}
    	printf("str : %s\n", str);
    	system("pause");
    	return 0;
    }

            


     方法4 : 二进制文件利用fread()返回值

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #define SIZE 5
    int main() {
    	FILE* fp;
    	double arr[SIZE] = { 1.1,2.2,3.3,4.4,5.5 };
    	double num;
    	if ((fp = fopen("test3.txt", "wb")) == NULL) {
    		printf("error\n");
    		system("pause");
    		return 0;
    	}
    	fwrite(arr, sizeof(arr[0]), SIZE, fp);
    	fclose(fp);
    	fp = NULL;
    	if ((fp = fopen("test3.txt", "rb")) == NULL) {
    		printf("error\n");
    		system("pause");
    		return 0;
    	}
    	while (fread(&num, sizeof(arr[0]), 1, fp)) {
    		printf("%.1f\n", num);
    	}
    	fclose(fp);
    	system("pause");
    	return 0;
    }

     fread()函数会返回读取成功的个数, fread(&num, sizeof(arr[0]), 1, fp)中每次读取1个字节长为sizeof(arr[0])的数据, 若成功则返回返回成功的个数1, 若失败也就是成功0个, 返回0

        


    feof函数

    定义于头文件 <stdio.h>  
    int feofFILE *stream ) 
    检查是否已抵达给定文件流的结尾
    当文件读取结束时, 若是遇到文件尾结束,则返回

    注意 : 在文件读取过程中,不能feof函数的返回值直接用来判断是否遇到末尾结束。但可以用于当文件读取结束的时候,判断是读取失败结束(返回0值),还是遇到文件尾结束(返回非0值)。
    即, 文件读取结束后, feof才能判断, 所以我们不能在进行读取文件时, 直接用feof()当做条件来判断, 
    我们来看下面几个例子 :

    1. feof的经典错误 

       文件test1.txt为空

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    int main() {
    	FILE* fp;
    	if ((fp = fopen("test1.txt", "r")) == NULL) {
    		printf("error\n");
    		system("pause");
    		return 0;
    	}
    	if (feof(fp)) {
    		printf("test1.txt为空\n");
    	}
    	else {
    		printf("test1.txt不为空\n");
    	}
    	system("pause");
    	return 0;
    }

    feof函数如果可以之间判断是否到文件尾, 应该会输出test1.txt为空, 结果却不是, 结果如图:

    但如果我们在用feof()函数之前加上一个语句fgetc(fp)就会出现正确结果 

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    int main() {
    	FILE* fp;
    	if ((fp = fopen("test1.txt", "r")) == NULL) {
    		printf("error\n");
    		system("pause");
    		return 0;
    	}
    	fgetc(fp);
    	if (feof(fp)) {
    		printf("test1.txt为空\n");
    	}
    	else {
    		printf("test1.txt不为空\n");
    	}
    	system("pause");
    	return 0;
    }

    结果如图 : 

    我们再来看,test2.txt 如图 :

    我们来看这段代码,

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    int main() {
    	FILE* fp;
    	int count = 0;
    	if ((fp = fopen("test2.txt", "r")) == NULL) {
    		printf("error\n");
    		system("pause");
    		return 0;
    	}
    	while (!feof(fp)) {
    		fgetc(fp);
    		printf("%d\t", ++count);
    	}
    	system("pause");
    	return 0;
    }

    test2中共有10个字符, 结果应该输出  1 2 3 4 5 6 7 8 9 10, 循环十次. 实则不然, 循环了11次, 如图:

    我们再来看 

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    int main() {
    	FILE* fp;
    	int n;
    	if ((fp = fopen("test2.txt", "r")) == NULL) {
    		printf("error\n");
    		system("pause");
    		return 0;
    	}
    	while (! (n = feof(fp))) {
    		printf("feof(fp)=%d, ", n);
    		printf("%d\n", fgetc(fp));
    	}
    	printf("feof(fp)=%d", n);
    	system("pause");
    	return 0;
    }

    运行结果如图, 输出feof的返回值和字符的ASCII码, 当fgetc读到文件末尾时返回EOF(-1), 此时 feof返回值为-1(非0)

      

     通过这几段代码我们发现 , feof()是在别的函数读取到文件末尾后继续读取失败后才做出的文件读取结束的判断

    我们可以这样来解决这个问题, 如以下代码:


    方法5:利用feof函数判断

    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    int main() {
    	FILE* fp;
    	char c;
    	if ((fp = fopen("test2.txt", "r")) == NULL) {
    		printf("error\n");
    		system("pause");
    		return 0;
    	}
    	c = fgetc(fp);
    	while (! feof(fp)) {
    		printf("%c %d\n", c, c);
    		c = fgetc(fp);
    	}
    	system("pause");
    	return 0;
    }

    运行结果如图 , 实际是c读取了-1的值但并未输出 . 

     

    目前就理解到这, 感觉并不是大彻大悟, 以后有新的理解再补充吧 

    展开全文
  • feof如何跳出循环问题

    2021-03-24 17:18:58
    介绍下使用feof出现的两种错误 以txt中存储的是A-Z的字符为例 (1)feof和fseek搭配使用导致跳不出循环 在实际使用中我们会使用fseek调到某字节处,比如下面代码 int main() { FILE *fp; fopen_s(&fp, "log.txt",...
    • 介绍一下IO操作的基础知识

    (1) long ftell(FILE *stream);

    功能:用于得到文件位置指针当前位置相对于文件首的偏移字节数,即可计算得到stream的当前位置

    (2)int fseek(FILE *stream, long offset, int origin)

    功 能:函数设置文件指针stream的位置。如果执行成功,stream将指向以stream的位置为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。

    如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置,函数返回一个非0值。

    第三个参数:

    SEEK_SET: 文件开头

    SEEK_CUR: 当前位置

    SEEK_END: 文件结尾

    (3)int feof(FILE *stream)

    功能:检测流上的文件结束符,判断文件是否结束,返回值为0时表示还没有结束,否则结束!

    其他的打开读取写入等就不介绍了。

    • 介绍下使用feof出现的两种错误

    以txt中存储的是A-Z的字符为例

    (1)feof和fseek搭配使用导致跳不出循环

    在实际使用中我们会使用fseek调到某字节处,比如下面代码

    int main() 
    {
    	FILE *fp;
    	fopen_s(&fp, "log.txt", "r");
    	if (NULL == fp) 
    	{
    		perror("fopen fail");
    		return 1;
    	}
    	char flag;
    	int pos = 0;
    
    	while (!feof(fp))
    	{
    		pos = ftell(fp);
    		fread(&flag, 1, 1, fp);
    		printf("after pos: %d, %c\n", pos, flag);
    		fseek(fp, 5, SEEK_CUR);
    	}
    
    	fclose(fp);
    	system("pause");
    	return 0;
    }

     得到的结果是无限循环的

    原因分析:

    使用了fseek后就无法跳出循环了

    找到C语言关于fseek的文档:

    Sets the position indicator associated with the stream to a new position defined by adding offset to a reference position specified by origin. The End-of-File internal indicator of the stream is cleared after a call to this function, and all effects from previous calls to ungetc are dropped. When using fseek on text files with offset values other than zero or values retrieved with ftell, bear in mind that on some platforms some format transformations occur with text files which can lead to unexpected repositioning. On streams open for update (read+write), a call to fseek allows to switch between reading and writing.

    译为:

    将与流关联的位置指示器设置为通过向原点指定的引用位置添加偏移量而定义的新位置。在调用此函数后,将清除流的文件结束内部指示器,并删除以前调用ungetc时产生的所有效果。在文本文件上使用非零偏移值的fseek或使用ftell检索的值时,请记住,在某些平台上,文本文件会发生一些格式转换,这可能导致意外的重新定位。在打开更新流(读+写)时,对fseek的调用允许在读和写之间进行切换。

    其大体意思就是使用了fseek后就会消除到文件的结束标志位,导致feof不起作用。

    所以使用feof时候不能使用fseek,如果想要调转到某一个字节可以使用fread,fread在读取的时候也有移动指针位置的作用。(注掉上面代码中的fseek那一行就可以看到pos是变化的)
     

    int main() 
    {
    	FILE *fp;
    	fopen_s(&fp, "log.txt", "r");
    	if (NULL == fp) 
    	{
    		perror("fopen fail");
    		return 1;
    	}
    	char flag;
    	int pos = 0;
    
    	while (!feof(fp))
    	{
    		pos = ftell(fp);
    		fread(&flag, 1, 1, fp);
    		printf("after pos: %d, %c\n", pos, flag);
    
    		//法一:移动的是变量的话可以使用for循环来移动到某位
    		//for (int i = 0; i < 5; i++)
    		//	fread(&flag, 1, 1, fp);
            //法二:移动的是常量的话可以移动到一个数组中
    		char c[5];
    		fread(c, 5, 1, fp);
    		//fseek(fp, 5, SEEK_CUR); //移动error
    	}
    
    	fclose(fp);
    	system("pause");
    	return 0;
    }

    (2)feof循环时多输出一次

    int main()
    {
    	FILE *fp;
    	fopen_s(&fp, "log.txt", "r");
    	if (NULL == fp) 
    	{
    		perror("fopen fail");
    		return 1;
    	}
    	char flag;
    	int pos = 0;
    
    	while (!feof(fp))
    	{
    		pos = ftell(fp);
    		fread(&flag, 1, 1, fp);
    		printf("after pos: %d, %c\n", pos, flag);
    	}
    
    	fclose(fp);
        return 0;
    }

    原因分析:

    在读完文件的最后一个字符后,fp->flag没有被置为_IOEOF,因而feof()没有探测到文件结尾。直到再次调用fgetc()或者fread执行读操作,feof()才能探测到文件结尾。

    解决方法:

    1、在进入while循环前先读取一次(不推荐

    int main() 
    {
    	FILE *fp;
    	fopen_s(&fp, "log.txt", "r");
    	if (NULL == fp) 
    	{
    		perror("fopen fail");
    		return 1;
    	}
    	char flag;
    	int pos = 0;
    	fread(&flag, 1, 1, fp);
    	while (!feof(fp))
    	{
    		pos = ftell(fp);
    		fread(&flag, 1, 1, fp);
    		printf("after pos: %d, %c\n", pos, flag);
    	}
    
    	fclose(fp);
    	system("pause");
    	return 0;
    }

    这样可以跳出循环,但是第一次的数值就浪费了,并且最后一次也不对,多读了一次Z。

    2.通过长度来跳出while循环(推荐

    int main() 
    {
    	FILE *fp;
    	fopen_s(&fp, "log.txt", "r");
    	if (NULL == fp) 
    	{
    		perror("fopen fail");
    		return 1;
    	}
    	char flag;
    	int pos = 0;
    
    	//计算文件大小
    	fseek(fp, 0, SEEK_END);
    	long size = ftell(fp);
    	fseek(fp, 0, SEEK_SET);
    
    	while (size != ftell(fp))
    	{
    		pos = ftell(fp);					
    		fread(&flag, 1, 1, fp);
    		printf("after pos: %d, %c\n", pos, flag);
    	}
    
    	fclose(fp);
    	system("pause");
    	return 0;
    }


    该方法是通过fseek调转到文件尾先计算出文件的字节数size,然后再跳转到文件头开始读取,知道fp指向的位置满足size大小,则退出

     

     

    展开全文
  • feof

    2014-11-18 11:12:35
    相关函数:fopen, fgetc, fgets, fread ...函数说明:feof()用来侦测是否读取到了文件尾, 尾数stream 为fopen()所返回之文件指针. 如果已到文件尾则返回非零值, 其他情况返回0. 返回值:返回非零值代表已到达文件尾.
    相关函数:fopen, fgetc, fgets, fread

    头文件:#include <stdio.h>

    定义函数:int feof(FILE * stream);

    函数说明:feof()用来侦测是否读取到了文件尾, 尾数stream 为fopen()所返回之文件指针. 如果已到文件尾则返回非零值, 其他情况返回0.

    返回值:返回非零值代表已到达文件尾.
    展开全文
  • c语言feof函数 C语言中的feof()函数 (feof() function in C) Prototype: 原型: int feof(FILE* filename); Parameters: 参数: FILE *filename Return type: int(0 or 1) 返回类型: int(0或1) Use of ...
  • 被错误使用的feof int feof( FILE *stream ); 功能:检查是否设置了与流关联的文件结束指示符,如果是,则返回一个不为零的值。 牢记:在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。 而是...
  • feof的原理及用法

    千次阅读 2018-11-28 19:46:52
    一、feof()是什么? feof()是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0 一般在文件操作,中经常使用feof()判断文件是否结束。 二、feof()的经典错误 根据这个函数的定义,一般大家都是...
  • 判断文件结束有两种方法:EOF和feof() 查看stdio.h可以看到如下定义: #define EOF (-1) #define _IOEOF 0x0010 #define feof(_stream) ((_stream)->_flag & _IOEOF) 由此可以看出,这两种方式的原理是不同的。...
  • 要想了解 feof(FILE* stream) 如何使用,需要我们对文件读写的几个基本概念进行澄清。 FILE 结构体由以下几个成员组成 (C95) Character width: unset, narrow, or wide. (C95) Parse state for conversions ...
  • feof int feof(FILE *stream); 在文件到达文件尾时给出一个非零值。 如果不是read超过文件结尾,那么feof返回的都是零。 根据数据的组织和操作形式,可以分为ASCII文件和二进制文件。 #include #include int main()...
  • EOF和feof()区别

    千次阅读 2019-09-17 19:55:28
    #define feof(_stream) ((_stream)->_flag & _IOEOF) EOF是不可输出字符,因此不能在屏幕上显示。由于字符的ASCII码不可能出现-1,因此EOF定义为-1是合适的。当读入的字符值等于EOF时,表示读入的已不是正常...
  • C语言中关于feof的使用问题

    千次阅读 2019-08-20 11:45:30
    在C语言中,feof()函数的使用是根据指针内容判断的,而非指针位置,无论指针是否到头,甚至超出了,它都需要先读取指针的内容,看一看内容是否是EOF,然后才知道文件到头了。 看到这里你应该能够知道上文例子中为...
  • 文件:feof的用法

    2021-06-20 15:35:19
    当文件没读到尾巴之前,feof(fd)=0 ; 当文件读到尾巴 ,feof(fd) = !0 ;
  • 关于使用fgetc函数和feof函数的一些注意事项 众所周知,文件分为二进制文件和文本文件,它们在磁盘中的存储方式是相同的,都是二进制存储,但是它们的读取方式不同。对于文本文件,我们通常使用逐个字节读取的方式...
  • feof(fp))读取没问题,最后一行读取为空行,但是win7电脑运行同样的代码,却只读到最后一行,非空行,导致在创建链表头指针时,链表最后尾部结点少了一个,麻烦大佬帮看看是为什么,急!! ``` Lnode* creat() ...
  • feof()函数的文件操作

    2020-05-13 12:23:36
    feof()函数在文件操作时,用于判断文件是否结束。如果文件结束,则返回非0值,否则返回0。 对于文件来说,无论是空文件,还是存有信息的文件。文档的结尾都有一个隐藏字符”EOF”,意思就是end of file,指示文件的...
  • feof()原理和用法

    2020-07-02 17:46:43
    feof()是检测流上的文件结束符的函数,如果文件结束,则返回非0值,否则返回0 一般在文件操作,中经常使用feof()判断文件是否结束 //读取文件 while(!feof(plain)) { //每次读16个字节,并返回成功读取的字节...
  • C语言feof重复读取的问题

    千次阅读 2020-02-25 13:53:33
    文章目录前言问题解释解决方法总结 前言 最近一个大一的朋友找我说是不会c语言...用feof来作为循环控制条件时会重复读取一次文本末尾的内容 下面是我写的错误demo: #include <stdio.h> #include <stdlib.h...
  • PHP feof() 函数

    2019-09-21 08:48:40
    public function removeTask() { $file = fopen('/home/wwwroot/default/public/updateBuilding.csv', "r"); $i = 0; $err = array(); while (! feof($file)) { ...
  • feof函数

    2019-09-21 23:52:58
    feof是一个多义词,请在下列义项上选择浏览(共2个义项)添加义项 ▪函数名 ▪检测流文件指针是否已到达文件结尾 收藏 查看我的收藏 543有用+1 已投票 10 feof (函数名) 编辑 锁定 ...
  • $feof是用来检测文件结束符EOF的函数,如果文件结束,则返回非0值,所以用来判断文件是否便利结束。 $fscanf的作用是将指针指向的文件按照所规定的类型进行逐个扫描并暂存到word中。在使用时,也可以用void'($...
  • C语言中关于feof函数&fgetc函数一些理解前言问题解决 前言 在使用C语言来对文件操作的时候,我们经常使用一些feof、fgetc函数,但是在使用的过程中也会遇到一些小问题。 问题 在今天编写C语言时候,我写了如下一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,517
精华内容 14,206
关键字:

feof