当前位置:首页 » 编程语言 » feofc语言

feofc语言

发布时间: 2023-01-02 16:21:36

A. feof(fp)是什么意思每一个字母如何解释

feof是c语言标准库函数,其原型在stdio.h中,其功能是检测流上的文件结束符,如果文件结束,则返回非0值,否则返回0(即,文件结束:返回非0值,文件未结束,返回0值),文件结束符只能被clearerr()清除。(这里的检测流上的文件结束符就相当于声卡检测电流信号的一个过程)

int feof(FILE *stream);

参数

流 :FILE结构的指针

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

(1)feofc语言扩展阅读

相关函数

getc()

功能:函数从流中返回一个字符值。

语法:int getc(FILE * stream)

返回值:整数值。

函数种类:“stdio.h”

内容说明:此函数和fgetc函数相似,但它是以一个宏来实现的。另外它将不止一次地计算流参数咖,这对通常的宏的规则来说是一个例外。getc是一个已经高度优化的函数,所以该函数是进行单个字符读操作的最好的函数。

参考:如fputc();fgetc();putc();fopen()。

fputs()

功能:将字符串中的内容写到指定的流中。

语法: int fputs(const char *s,FILE * stream)

返回值:整数值。

函数种类:“stdio.h”

内容说明:函数将字符串指针s所指向的字符串中的内容写到流stream中。标志结束的空字符(NULL)不写。函数也不另外增加一个换行符。只是输出字符串中的所有字符。 函数操作成功时返回值为0,否则返回非0值。

如果流是以文本形式打开的,就会对有些字符进行翻译操作。这意味着字符串可能会与文件内容之间没有一一对应的映射关系。然而,当文件以二进制打开时,不发生字符翻译,在字符串与文件内容之间存在一一对应的映射关系。

参考资料来源:网络-fgetc

参考资料来源:网络-feof

B. c语言feof()

第一个代码结果是11不错,但第二个就不是10了,应该是2——第一个代码用fgetc读,它把结束符也当一个字符读取了,当然' '也被读取了,共读了12个,但c==' '时被否定了,num没有增值,所以最后num是11;第二个代码显然只能把0123456789当一个整数来读(遇到' '判断为数据结束),所以一次就读完了,之所以最后num是2,是因为一次读完后并没有越过文件结尾产生读操作,所以feof不可能返回“真”,还要再读一次才产生错误,所以结果是2。这里有个问题必须注意:feof这个函数不产生读文件操作,只检查刚刚发生的读操作是否越过文件结尾了,所以要在逻辑上紧跟在读操作函数之后才能正确发挥作用。从这点上说,这两款代码都有错误,应该这么写:

(1)代码改如下:

#include"stdio.h"
intmain(){
FILE*fp;
intnum=0;
//inta;
charc;
if((fp=fopen("D:\a.txt","r"))==NULL){
printf("打开文件时发生错误... ");
return0;
}
while(1){
c=fgetc(fp);
if(feof(fp))//把判断提前到这里来,处理过了再判断毫无意义
break;
if(c!=' '){
num++;
printf("%c ",c);
}
}
printf(" %d ",num);
fclose(fp);
return0;
}

(2)代码改如下:

#include"stdio.h"
intmain(intargv,char*argc[]){
FILE*fp;
intnum=0;
inta;
//charc;
if((fp=fopen("D:\a.txt","r"))==NULL){
printf("打开文件时发生错误... ");
return0;
}
while(1){
fscanf(fp,"%d",&a);
if(feof(fp))
break;
num++;
printf("%d ",a);
}
printf(" %d ",num);
fclose(fp);
return0;
}

这样改后前者结果就应该是10,后者结果就应该是1。相信不会有错。——由于图3什么也看不清,不知你要问什么问题,以上只是按主要题意猜答的。

C. C语言的feof()函数

feof()函数不是判断上次读操作是否读到文件末尾,而是判断当前文件指针所指向未知是否是文件末尾。和你读没读没关系。
所以即使你打开文件,没有读,如果文件是个空文件,那么直接调用feof()也将返回真。

D. C语言中feof的用法疑问

feof
只是“事后”检查,它不会改变文件流的状态,甚至根本不会去读文件,它只会检查相应的
FILE
结构体的
eof
标记。某种意义上,
feof
就是面向对象中的
getter
方法。
只有别的函数从文件里面读东西然后因为碰到错误于是需要的东西没有读出来,才会把
对应的
FILE
结构体

eof
标记设为真。

E. C语言中的feof函数

即使文件是空的,也要再读一次,feof函数值才会变为真。
因为只有读出所有的数据之后,再读一次,函数feof(fp)的返回值才为真。(请见《C语言好程序设计—从入门到进阶》,人民邮电出版社,2011。)
示例:
#include<stdio.h>
#include<stdlib.h>
main()
{
FILE *fp;
int a;
if((fp=fopen("c:\\number.txt","r"))==NULL)
{
printf("文件打开失败!\n");
exit(0);
}
fscanf(fp,"%d",&a);
while(!feof(fp)) /*等价于while(feof(fp)==0)*/
{
printf("%d ",a);
fscanf(fp,"%d",&a);
}
fclose(fp);
}

F. C语言:feof函数返回值问题

返回值0 1
0代表没到文件尾
1代表到文件尾了
while(!feof(in))是说如果没到文件尾就继续 若到文件尾了 结束循环

G. C语言中的feof怎么用

这一句:

while(!feof(p));//循环到文件结尾

把while (!feof(p)) 后面的; 去掉,否则就成死循环了

H. C语言中的feof怎么用

feof(文件流指针)
,不到结尾返回0,否则返回1
就一个判断状态的函数
file
*fp=fopen。。。。
打开成功才能调用该函数
这个状态检测是当文件读取函数发生读失败才会出现

I. c语言中feof是什么意思

feof是一个c语言函数,既可用以判断二进制文件又可用以判断文本文件。feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0。

EOF是文件结束标志的文件。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,ASCⅡ代码的范围是0到255,不可能出现-1,因此可以用EOF作为文件结束标志。

当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志。为解决这一个问题,ASCI C提供一个feof函数,用来判断文件是否结束。


(9)feofc语言扩展阅读:

feof的正确写法:

在VC里,只有当文件位置指针(fp->_ptr)到了文件末尾,然后再发生读/写操作时,标志位(fp->_flag)才会被置为含有_IOEOF。然后再调用feof(),才会得到文件结束的信息。

因此,如果运行如下程序:

char c;

while(!feof(fp))

{

c = fgetc(fp);

printf("%X/n", c);

}
会发现多输出了一个FF,原因就是在读完最后一个字符后,fp->flag仍然没有被置为_IOEOF,因而feof()仍然没有探测到文件结尾。直到再次调用fgetc()执行读操作,feof()才能探测到文件结尾。这样就多输出了一个-1(即FF)。

正确的写法应该是:

char c;
c = fgetc(fp);
while(!feof(fp))
{
printf("%X/n", c);
c = fgetc(fp);
}

热点内容
java直播网站源码 发布:2025-07-04 14:46:35 浏览:169
安卓应用市场消费记录怎么删除 发布:2025-07-04 14:39:47 浏览:30
知道一个服务器的ip地址 发布:2025-07-04 14:20:33 浏览:597
苹果7锁屏密码怎么改 发布:2025-07-04 14:04:44 浏览:710
P三零是什么配置 发布:2025-07-04 13:58:41 浏览:361
哪个安卓机有长方形home键 发布:2025-07-04 13:43:58 浏览:861
android脚本录制 发布:2025-07-04 13:17:47 浏览:342
嵌入式和安卓哪个硬件成本高 发布:2025-07-04 13:05:56 浏览:229
360代理服务器怎么设置 发布:2025-07-04 12:49:49 浏览:515
iphone在哪清除缓存 发布:2025-07-04 12:49:38 浏览:340