getc()和fgetc()函数的区别??

lirui1115 2010-05-10 10:07:10
书上说getc()和fgetc()函数可以相互替换。
请问各位达人,这个两个函数有什么区别啊,如果一样的话,只接用getc()就可以了,为什么还要fgetc(),

从字面上理解,fgetc(),应该是关于文件操作,因为用f打头。
...全文
824 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nico_W 2011-04-10
  • 打赏
  • 举报
回复
我只知道fscanf不可以在字符串中读入回车而fgetc可以
民兵戈尔丹 2011-01-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lirui1115 的回复:]
getc也可以指字流啊.

getc(fp);
[/Quote]

+1

不过getc()是个宏定义,具体我就不知道了
yirenyang 2010-05-12
  • 打赏
  • 举报
回复
为了书写方便,系统把fputc和fgetc定义为宏名putc和getc:

#define putc(ch, fp) fputc(ch, fp)
#define getc(fp) fgetc(fp)

这个是在stdio.h中定义的,所以没有区别。
chaoliu1024 2010-05-11
  • 打赏
  • 举报
回复
加f都是从文件I/O,不加的从标准设备I/O。比如fprintf,fscanf和printf,scanf。
楼主把鼠标移到这些函数上,点F1,查看MSDN,里面说的很清楚。不多要先装一下MSDN
wesleyluo 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 cao_julians 的回复:]
getc()是fgetc()的一个子集:
即getc()等价于fgetc(stdin)----即上边几位说过的,getc()只能从stdin--标准输入设备中读字符。
而fgetc(任意文件流或设备流)是一个可从任意文件或设备中读字符
有的书上说getc()就是fgetc(stdin)的宏定义----可以不必弄得那么明白
[/Quote]
同意。
cao_julians 2010-05-11
  • 打赏
  • 举报
回复
getc()是fgetc()的一个子集:
即getc()等价于fgetc(stdin)----即上边几位说过的,getc()只能从stdin--标准输入设备中读字符。
而fgetc(任意文件流或设备流)是一个可从任意文件或设备中读字符
有的书上说getc()就是fgetc(stdin)的宏定义----可以不必弄得那么明白
lirui1115 2010-05-11
  • 打赏
  • 举报
回复
如果没用区别的话,为什么需要两个同样的函数呢?
Zijian_Zhang 2010-05-11
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 zhao4zhong1 的回复:]
getc
Same as fgetc, but implemented as a function and as a macro.
[/Quote]

I agree too!
赵4老师 2010-05-11
  • 打赏
  • 举报
回复
getc
Same as fgetc, but implemented as a function and as a macro.
lirui1115 2010-05-10
  • 打赏
  • 举报
回复
我想问这两个函数有什么区别,看来是没什么区别。是这样吗
jackyjkchen 2010-05-10
  • 打赏
  • 举报
回复
fgetc传stdin,也能接受控制台
lirui1115 2010-05-10
  • 打赏
  • 举报
回复
getc也可以指字流啊.

getc(fp);
晨星 2010-05-10
  • 打赏
  • 举报
回复
是啊,fgetc可以从任何文件中输入,而getc只能从标准输入文件(默认是控制台)中输入。

69,396

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧