谁有c语言中int ferror(FILE *stream),返回非零0代表含义列表?

[复制链接]
查看11 | 回复6 | 2011-9-7 10:25:53 | 显示全部楼层 |阅读模式
回复

使用道具 举报

千问 | 2011-9-7 10:25:53 | 显示全部楼层
intferror(FILE*stream);CheckerrorindicatorChecksiftheerrorindicatorassociatedwithstreamisset,returningavaluedifferentfromzeroifitis.Thisindicatorisgeneralysetbyapreviousoperationonthestreamthatfailed.ParametersstreamPointertoaFILEobjectthatidentifiesthestream.ReturnValueIftheerrorindicatorassociatedwiththestreamwasset,thefunctionreturnsanonzerovalue.Otherwise,itreturnsazerovalue.根据库函数的说明,非零的errorindicator没有具体的含义,就是用来指示这个FILEtream当前有错误发生,一般是为增强代码强健性加入的检验性程序,避免在文件操作时出现程序锁死或错误。程序中有些错误的具体错误信息往往很难捕捉和辨别的,而且一般是与编译器和操作系统平台相关的。
回复

使用道具 举报

千问 | 2011-9-7 10:25:53 | 显示全部楼层
如果ferror返回值为0(假),表示未出错。如果返回一个非零值,表示出错,好像标准中没有含义列表,正常对于流操作而言,个人猜测是否出错之前完成的字节数?不过没有试验过
回复

使用道具 举报

千问 | 2011-9-7 10:25:53 | 显示全部楼层
哥们,给你参看以下:函数名:ferror功能:在调用各种输入输出函数(如putc.getc.fread.fwrite等)时,如果出现错误,除了函数返回值有所反映外,还可以用ferror函数检查。它的一般调用形式为ferror(fp);如果ferror返回值为0(假),表示未出错。如果返回一个非零值,表示出错。应该注意,对同一个文件每一次调用输入输出函数,均产生一个新的ferror函数值,因此,应当在调用一个输入输出函数后立即检查ferror函数的值,否则信息会丢失。在执行fopen函数时,ferror函数的初始值自动置为0。用法:intferror(FILE*stream);程序例:#includestdio.hintmain(void){FILE*stream;/*openafileforwriting*/stream=fopen(\"DUMMY.FIL\",\"w\");/*forceanerrorconditionbyattemptingtoread*/(void)getc(stream);if(ferror(stream))/*testforanerroronthestream*/{/*displayanerrormessage*/printf(\"ErrorreadingfromDUMMY.FIL\\n\");/*resettheerrorandEOFindicators*/clearerr(stream);}fclose(stream);return0;}
回复

使用道具 举报

千问 | 2011-9-7 10:25:53 | 显示全部楼层
下个msdn自己查啦。追问linux
回复

使用道具 举报

千问 | 2011-9-7 10:25:53 | 显示全部楼层
int__cdeclferror(FILE*stream){return(((stream)-_flag}_IOERR是0x0020,所以ferror的返回值取决于FILE*stream-_flag的值。而C语言标准没有确定FILE的结构,它只给出了一个FILE的轮廓(C标准只描述了FILE的5个成员,而且没有给出它们的命名).因此,不同的实现有不同的命名办法.比如CBuilder6的FILE结构为:typedefstruct{unsignedchar*curp;/*Currentactivepointer*/unsignedchar*buffer;/*Datatransferbuffer*/intlevel;/*fill/emptylevelofbuffer*/intbsize;/*Buffersize*/unsignedshortistemp;/*Temporaryfileindicator*/unsignedshortflags;/*Filestatusflags*/wchar_thold;/*Ungetccharifnobuffer*/charfd;/*Filedescriptor*/unsignedchartoken;/*Usedforvaliditychecking*/}FILE;/*ThisistheFILEobject*/flag表示文件状态,还是很笼统。不嫌麻烦,你可以用C流来反馈具体实现的flag标志位是什么样的.
回复

使用道具 举报

千问 | 2011-9-7 10:25:53 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行