学习C语言的,文件操作,大都会用到它。

它的函数原型:

这个函数的返回值,是返回读取的一个字节。如果读到文件末尾返回EOF。
EOF其实就是一个宏
#define EOF (-1)
表示-1.
既然返回的是一个字节,为什么返回值确用4字节的int表示,不用unsigned char这1个字节类型表示,或直接
用char类型表示呢?

原因就是出在返回值要能表示-1.unsigned char表示无符号的,而这返回值,需要是-1才可以表示文件读到末尾了,那可以char类型表示-1,但是-1在char类型中表示的值为0xff,然而它本身就是一个字节的内
容,如果文件中的一个字节是0xff,难道就认为文件结束,这是不合理的,用int作返回值,就不会出现这个问题,-1用int表示为0xffffffff;而字节值如果0xff这它返回的int值就会是0x000000ff,这样就可以区别开字节值为
0xff和文件结束标识EOF.
注:EOF只是为了标识已经读到文件末尾,它并不是一个存储在文件中的字节。
因此,我们在写程序时就不能写如下的代码:

#include<stdio.h>
void main()
{ FILE *fp; char c;fp=fopen("exist","r"); while((c=fgetc(fp))!=EOF)//应该改为while(fgetc(fp) != EOF) printf("%c",c); fclose(fp);
}

转载于:https://www.cnblogs.com/yongdaimi/p/6927744.html

C语言中fgetc函数返回值为什么是int?相关推荐

  1. Cnbsp;语言中strcmp函数返回值问题

    关于strcmp这个函数标准时这样规定的: int strcmp ( const char * str1, const char * str2 ); Compare two strings Compa ...

  2. c 语言中fgetc函数,C 库函数 - fgetc()

    描述 C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动. 声明 下面是 fgetc() 函数的声明. in ...

  3. c语言中fgetc函数的介绍

    点击上方蓝字关注我,了解更多咨询 1.fgetc函数返回的字符实际上是文件流中位置指针指向的字符. 当fgetc函数读取错误时,返回EOF并设置文件错误标志位. 2.该函数以无符号char强制转换为i ...

  4. c语言fgetc函数作用,C语言中fgetc函数的使用方法

    该函数包含在C语言中的stdio.h头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置. 函数原型:int fgetc(FILE *fp); 函数功能:从流中读取字符,即从fp所指定的文件中 ...

  5. c语言中time 0 返回值,clock()返回值为什么是0

    clock()返回值为什么是零? 我在一个算法题目的时候,用到clock()函数,然后发现这个函数老师怪异的,然后自己写一个程序来测试,咋会这样呢? #include #include int mai ...

  6. exit在c语言里的作用,C语言中exit函数的使用

    exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束 return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调 ...

  7. c语言sizeof返回数据类型,sizeof函数返回值类型

    #include int main(void) { printf("type int has a size of (1)sizeof不是函数,它只是一个操作符(operator). (2)s ...

  8. Linux编程基础之lseek函数返回值

    目录 前言 lseek函数返回值 实操证明 书的原图 总结 前言 操作系统:Fedora 头文件 <sys/types.h> , <unistd.h> lseek函数返回值 o ...

  9. c语言中 调用函数除函数名外,【单选题】在 C 语言中 , 调用函数除函数名外 , 还必须有 ( ). (10.0分) A. 函数预说明 B. 实际参数 C. ( ) D. 函数返回值...

    [单选题]在 C 语言中 , 调用函数除函数名外 , 还必须有 ( ). (10.0分) A. 函数预说明 B. 实际参数 C. ( ) D. 函数返回值 更多相关问题 下列关于IMOECDIS性能标 ...

最新文章

  1. 刷新三项世界纪录的跨镜追踪(ReID)技术是怎样实现的?进来了解一下
  2. pandas使用query函数查询指定日期索引之间对应的dataframe数据行(select rows date index between a certain date interval)
  3. 势在人为:人才吸引力报告2020
  4. js向页面中动态添加脚本
  5. HDU 5281 Senior's Gun 贪心
  6. LeetCode962. 最大宽度坡
  7. 【ACM】hdu_1276_士兵队列训练问题_201308131032
  8. c语言static的用法_一文轻松掌握,单片机中C语言的数据存储与程序编写
  9. Visio2016下载激活破解
  10. deepin linux字体设置,在deepin系统中如何安装系统字体? - Deepin深度系统用户手册...
  11. Gliffy Diagrams 安装问题
  12. wps实现冻结首行的方法
  13. win7开启wifi共享(热点)
  14. MGMT_VIEW 用户的功能与作用
  15. iOS 瘦身!一个让 50% 本地图片消失的方案
  16. echarts柱状图实现正负值不同颜色在上方显示数值
  17. Sprite的一些有趣的现象
  18. 求出 2 到 n 之间 (含 n)的所有素数。
  19. 教您一招解决Word不能复制粘贴问题
  20. cdr2022订阅版 全新版本新功能体验CorelDRAW2022

热门文章

  1. 云中漫步 - 3:2013-4-27 微软云体验营北京站
  2. Java-Tomcat 5.5 下的JNDI
  3. 腾讯优图提出LCVR-MQVI算法,勇夺NTIRE 2021双赛道冠亚军
  4. 如何利用 NVIDIA 安培架构 GPU 的新一代 Tensor Core 对计算进行极致加速
  5. 应用机器学习视频教程,哥伦比亚大学 2020版
  6. 【项目合作】最高50万元!道路缝隙检测、目标跟踪优化、机器人平台开发
  7. 重磅!谷歌大脑提出EfficientNet平衡模型扩展三个维度,取得精度-效率的最大化!...
  8. TensorFlow语义分割套件开源了ECCV18旷视科技BiSeNet实时分割算法
  9. fiddler汉化版可以改成英文吗_可以把推拉门改成平开窗吗?推拉门和平开窗哪个更好?...
  10. Linux 中最常用 150 个命令汇总