fgetc -- 从文件中读取一个字符
fgetc 函数文档函数概要:
fgetc 函数用于从文件流中读取下一个字符并推进文件的位置指示器(用来指示接下来要读写的下一个字符的位置)。
函数原型:
#include <stdio.h>
...
int fgetc(FILE *stream);
参数解析:
参数含义
stream 该参数是一个 FILE 对象的指针,指定一个待读取的文件流
返回值:
1. 该函数将读取到的 unsigned char 类型转换为 int 类型并返回;
2. 如果文件结束或者遇到错误则返回 EOF。
备注:
1. fgetc 函数和 getc 函数两个的功能和描述基本上是一模一样的,它们的区别主要在于实现上:fgetc 是一个函数;而 getc 则是一个宏的实现
2. 一般来说宏产生较大的代码,但是避免了函数调用的堆栈操作,所以速度会比较快。
3. 由于 getc 是由宏实现的,对其参数可能有不止一次的调用,所以不能使用带有副作用(side effects)的参数。
小甲鱼温馨提示:
我知道上面第 3 点可能会让有些童鞋感到懵逼,我这里给大家简单解释下,所谓带有副作用的参数就是指 getc(fp++) 这类型的参数,因为参数在宏的实现中可能会被调用多次,所以你的想法是 fp++,而副作用下产生的结果可能是 fp++++++。
演示:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
int ch;
if ((fp = fopen("hello.txt", "r")) == NULL)
{
printf("打开文件失败!\n");
exit(EXIT_SUCCESS);
}
while ((ch = fgetc(fp)) != EOF)
{
putchar(ch);
}
fclose(fp);
return 0;
}
{:5_109:} 本帖最后由 Jilzly 于 2021-7-29 13:16 编辑
ch是int型
页:
[1]