fgetc() 与getc()有什么区别呢?

Python017

fgetc() 与getc()有什么区别呢?,第1张

fgetc():

定义函数

int fgetc(FILE * stream)

函数说明

fgetc()从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。

返回值

fgetc()会返回读取到的字符,若返回EOF则表示到了文件尾。

getc():

功 能: 从流中取字符

用 法: int getc(FILE *stream)

注意: 此函数被ISO C声明为一个宏,所以在用时不能将其做为函数指针传(有一些编译器将其以函数形式也给另说)。它的原型如下 #define getc(_stream) (--(_stream)->_cnt >= 0?0xff &*(_stream)->_ptr++ : _filbuf(_stream))

补充: 在C语言中,用函数getc(fgetc)从文件读取字符。getc、fgetc用法相同。 getc的调用形式:ch=getc(fp)此处的fp是文件指针;函数功能是从文件指针指向的文件读入一个字符,并把它作为函数值返回给字符型变量ch。

fgetc()返回值: 成功时为作为 unsigned char 获得并转换为 int 的字符,失败时为 EOF 。

最后一个字符,如果读入成功了就返回这个“字符”。

然后继续往下读(此时已经都读完了,后面没有了),读取失败 返回的才是EOF,设置 stream 上的文件尾指示器(feof()),若是其他(非读到文件尾)原因导致失败也是返回EOF(但此时因其他错误导致失败)则设置 stream 上的错误指示器(ferror() )。

想要得到“EOF”需要在正好读完全文的条件下 再进行任意一次读取,此时读取失败才会有“EOF”。