C语言中fgetc函数返回值为什么是int?
学习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?相关推荐
- Cnbsp;语言中strcmp函数返回值问题
关于strcmp这个函数标准时这样规定的: int strcmp ( const char * str1, const char * str2 ); Compare two strings Compa ...
- c 语言中fgetc函数,C 库函数 - fgetc()
描述 C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动. 声明 下面是 fgetc() 函数的声明. in ...
- c语言中fgetc函数的介绍
点击上方蓝字关注我,了解更多咨询 1.fgetc函数返回的字符实际上是文件流中位置指针指向的字符. 当fgetc函数读取错误时,返回EOF并设置文件错误标志位. 2.该函数以无符号char强制转换为i ...
- c语言fgetc函数作用,C语言中fgetc函数的使用方法
该函数包含在C语言中的stdio.h头文件中,主要功能是从流中读取一个字符,并增加文件指针的位置. 函数原型:int fgetc(FILE *fp); 函数功能:从流中读取字符,即从fp所指定的文件中 ...
- c语言中time 0 返回值,clock()返回值为什么是0
clock()返回值为什么是零? 我在一个算法题目的时候,用到clock()函数,然后发现这个函数老师怪异的,然后自己写一个程序来测试,咋会这样呢? #include #include int mai ...
- exit在c语言里的作用,C语言中exit函数的使用
exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束 return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调 ...
- c语言sizeof返回数据类型,sizeof函数返回值类型
#include int main(void) { printf("type int has a size of (1)sizeof不是函数,它只是一个操作符(operator). (2)s ...
- Linux编程基础之lseek函数返回值
目录 前言 lseek函数返回值 实操证明 书的原图 总结 前言 操作系统:Fedora 头文件 <sys/types.h> , <unistd.h> lseek函数返回值 o ...
- c语言中 调用函数除函数名外,【单选题】在 C 语言中 , 调用函数除函数名外 , 还必须有 ( ). (10.0分)
A. 函数预说明 B. 实际参数 C. ( ) D. 函数返回值...
[单选题]在 C 语言中 , 调用函数除函数名外 , 还必须有 ( ). (10.0分) A. 函数预说明 B. 实际参数 C. ( ) D. 函数返回值 更多相关问题 下列关于IMOECDIS性能标 ...
最新文章
- 刷新三项世界纪录的跨镜追踪(ReID)技术是怎样实现的?进来了解一下
- pandas使用query函数查询指定日期索引之间对应的dataframe数据行(select rows date index between a certain date interval)
- 势在人为:人才吸引力报告2020
- js向页面中动态添加脚本
- HDU 5281 Senior's Gun 贪心
- LeetCode962. 最大宽度坡
- 【ACM】hdu_1276_士兵队列训练问题_201308131032
- c语言static的用法_一文轻松掌握,单片机中C语言的数据存储与程序编写
- Visio2016下载激活破解
- deepin linux字体设置,在deepin系统中如何安装系统字体? - Deepin深度系统用户手册...
- Gliffy Diagrams 安装问题
- wps实现冻结首行的方法
- win7开启wifi共享(热点)
- MGMT_VIEW 用户的功能与作用
- iOS 瘦身!一个让 50% 本地图片消失的方案
- echarts柱状图实现正负值不同颜色在上方显示数值
- Sprite的一些有趣的现象
- 求出 2 到 n 之间 (含 n)的所有素数。
- 教您一招解决Word不能复制粘贴问题
- cdr2022订阅版 全新版本新功能体验CorelDRAW2022
热门文章
- 云中漫步 - 3:2013-4-27 微软云体验营北京站
- Java-Tomcat 5.5 下的JNDI
- 腾讯优图提出LCVR-MQVI算法,勇夺NTIRE 2021双赛道冠亚军
- 如何利用 NVIDIA 安培架构 GPU 的新一代 Tensor Core 对计算进行极致加速
- 应用机器学习视频教程,哥伦比亚大学 2020版
- 【项目合作】最高50万元!道路缝隙检测、目标跟踪优化、机器人平台开发
- 重磅!谷歌大脑提出EfficientNet平衡模型扩展三个维度,取得精度-效率的最大化!...
- TensorFlow语义分割套件开源了ECCV18旷视科技BiSeNet实时分割算法
- fiddler汉化版可以改成英文吗_可以把推拉门改成平开窗吗?推拉门和平开窗哪个更好?...
- Linux 中最常用 150 个命令汇总