您的位置:首页 > 其它

getc、fgetc、getchar、ungetc

2016-02-19 11:21 155 查看

fgetc, fgets, getc, getchar, ungetc - input of characters and strings

#include <stdio.h>

int getc(FILE *stream);
int fgetc(FILE *stream);
int getchar(void);
//Returns: next character if OK, EOF on end of file or error


getc
可以用宏(macro)实现

fgetc
一定不用宏实现

getchar
等效于
getc(stdin)


getc
fgetc
之间的差别,意味着三件事:

1.
getc
的参数一定不能是有副作用的表达式

2. 可以使用
fgetc
的地址,作为函数指针传入其他function

3. 调用
fgetc
消耗的时间比
getc


这三个函数都是将
unsigned char
转换为
int
,因为
EOF
通常为负数(定义在stdio.h,有的系统采用-1),
int
才能装的下。

为了辨别产生
EOF
是因为文件尾还是错误,我们需要使用
ferror
,
feof
来判断

ferror,feof

链接:/article/10324048.html

ungetc-push back a character

能向流
stream
中放回一个字符

#include <stdio.h>

int ungetc(int c, FILE *stream);


尽管
ISO C
支持放回任何个的字符,但是实现中我们不应该放回超过一个字符。

我们不能
push back
一个EOF字符。

如果我们达到了文件的结尾,可以放入字符。下一次可以将该字符读取出来,接下来再读取会读取出
EOF


注意

不能使用
ungetc
将字符放回文件或者设备,因为它们保存在标准IO库的缓冲区中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: