fgetc 与 getc的区别
两个都是用来从stream中取得一个字符的,区别在于调用getc函数时所用的参数stream不能是有副作用的表达式(稍后解释),而fgetc函数则可以,也就是说,getc可以被当作宏来调用,而fgetc只能作为函数来调用。
一般来说,调用宏比调用函数耗费的时间少。
所以fgetc是一个函数
getc是一个宏
一般来说宏产生较大的代码,但是避免了函数调用的堆栈操作,所以速度会比较快。
有副作用的表达式,指的是表达式执行后,会改变表达式中某些变量的值
#include <stdio.h>#define MACRO_SQRT(x) x*x
int func_sqrt(int x)
{return x*x;
}int main()
{int x=10,y=10;int xx,yy;xx=func_sqrt(++x);printf("xx=%d,x=%d\n",xx,x);yy=MACRO_SQRT(++y);printf("yy=%d,y=%d\n",yy,y);return 0;
}
运行结果:
[root@nn c]# gcc getc.c
[root@nn c]# ./a.out
xx=121,x=11
yy=144,y=12
总结:fgetc和getc最大的区别在前者是函数,后者是宏,getc由fgetc通过宏实现,调用的时候注意参数stream不能是有副作用的表达式
fgetc 与 getc的区别相关推荐
- fgetc(),getc(),getchar()的用法
fgetc()和getc()用法是相同的,没有任何区别,getc()是宏定义函数,都是从流中读取一个字符. 从stdio流中读字符,相当于getc(stdin),它从标准输入里读取下一个字符. 在C语 ...
- 区分C语言中getch、getche、fgetc、getc、getchar、fgets、gets
首先,这两个函数不是C标准库中的函数, int getch(void) //从标准输入读入一个字符,当你用键盘输入的时候,屏幕不显示你所输入的字符.也就是,不带回显. int getche(v ...
- 文件结束标志EOF及fgetc fgets getc gets getchar函数
1. EOF(end of file) 大家都知道流(文本流,标准输入流)结束时会返回EOF,那么EOF到底是什么呢? 在stdio.h中我们可以看到相关声明: #define EOF (-1) 很明 ...
- c语言gets与fgetc,区分C语言中getch、getche、fgetc、getc、getchar、fgets、gets 转
首先,这两个函数不是C标准库中的函数, int getch(void) //从标准输入读入一个字符,当你用键盘输入的时候,屏幕不显示你所输入的字符.也就是,不带回显. int getche(void) ...
- c语言getch获取换行符,区分C语言中getch、getche、fgetc、getc、getchar、fgets、g...
首先,这两个函数不是C标准库中的函数: int getch(void) //从标准输入读入一个字符,当你用键盘输入的时候,屏幕不显示你所输入的字符.也就是,不带回显. int getche(void) ...
- [单刷APUE系列]第五章——标准I/O库
目录 [单刷APUE系列]第一章--Unix基础知识[1] [单刷APUE系列]第一章--Unix基础知识[2] [单刷APUE系列]第二章--Unix标准及实现 [单刷APUE系列]第三章--文件I ...
- C语言再学习 -- 输入/输出
一.缓冲区 输入字符的立即回显是非缓冲或直接输入的一个实例,它表示你说键入的字符被收集并存储在一个被成为缓冲区的临时存储区域中.按下回车可使你所键入的字符块对程序变成可用. 为什么需要缓冲区?首先,将 ...
- C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind...
由于最近经常使用到c语言中的读写文件,所以在此总结以下,方便以后查找. 在c中,文件操作都是由库函数来实现的,主要是分为读和写两种操作,以下详细讲解以下所有有关文件操作的邯郸乎的用法: //C++写入 ...
- C++ Reference: Standard C++ Library reference: C Library: cstdio: fgetc
C++官网参考链接:https://cplusplus.com/reference/cstdio/fgetc/ 函数 <cstdio> fgetc int fgetc ( FILE * ...
- APUE(第五章)标准IO
本章介绍的标准IO库,不仅是UNIX,多其他操作系统都实现了标准io库,比如windows,由ISO C标准说明 缓冲的重要性 流和FILE对象 标准IO库的操作是围绕流(stream)进行的. 标准 ...
最新文章
- java——-反省机制(代码例子)-
- Dreamweaver 2019安装教程
- php laravel组件,php – 在Laravel中为共享组件包中的文件配置
- Altium designer原理图库中元件变动后在原理图中同步更新方法
- 详解 Spotlight on MySQL监控MySQL服务器
- Kubernetes学习总结(4)——Kubernetes v1.20 重磅发布 | 新版本核心主题 主要变化解读
- java: jsp:param中文乱码
- python ios自动化_iOS python 自动化构建打包脚本
- sql中concat函数_SQL中的CONCAT函数概述和示例
- java jni 调用_java jni调用过程分析
- ps抠图-基础篇(三)
- node-sass 安装失败,原因总结
- 新加坡政府开放数据门户网站
- 用C语言图形库画一个红色爱心
- input隐藏边框轮廓、输入框输入提示
- 【量化课程】01_投资与量化投资
- OCR识别文字是什么?了解一下如何使用
- fastJson---如何获取json中所有kv(工具类-scala实现)
- 山羊拉丁文 - [Python3]
- ubuntu 修改开机启动项默认值
热门文章
- python英语单词 扇贝英语安卓下载_扇贝单词英语版app下载-扇贝单词英语版安卓版(附修改词汇书教程) - 超好玩...
- php 专业英语,给大家推荐几个专业英语翻译功能强大的网站
- pico3pro使用unity播放360全景视频及事件交互
- html如何取消页眉页脚设置,jquery web打印 取消 页眉和页脚
- Vue函数传参之event触发
- 卷积神经网络基础知识二
- input和output实例
- Gsensor驱动调试
- SIM800C长短信学习笔记
- 微软bi报表服务器,安装 Power BI 报表服务器