名称
fgetc,fgets,getc,getchar,ungetc – 字符和字符串的输入
概要
#include <stdio.h>
int fgetc(FILE *stream);
char *fgets(char *s, int size, FILE *stream);
int getc(FILE *stream);
int getchar(void);
int ungetc(int c, FILE *stream);
说明
fgetc从流中读取下一个字符,对该字符做unsigned char转int的类型转换操作之
后返回,如果到达文件结尾则返回EOF,也有可能因出错返回。
getc跟fgetc一样,除此之外它还可以被实现为一个宏定义用于多次测试流。
getchar等效于参数为stdin的getc。
fgets从stream中至多读取size-1个字符,并且把它们保存在s指向的缓冲区中。
当读入EOF或者换行符之后则停止读取,如果已经读入了换行符,那么换行符也
保存在缓冲区中。缓冲区内最后一个字符的后面自动追加一个结束符(’\0’)。
ungetc将参数c转换为unsigned char类型之后回退给stream,随后的读操作可以
获取到回退的内容,连续地调用ungetc将以逆序的方式把字符回退到流中。
上述的函数可以混合调用,也可以和I/O库中的其他输入函数混合调用。
关于非阻塞的实现,参考unlocked_stdio。
返回值
fgetc,getc,getchar返回unsigned char转为int类型之后的值,或者到达文件结
尾则返回EOF,也有可能因出错返回。
fgets成功时返回参数s,出错时返回NULL,到达文件结尾时也返回NULL。
ungetc成功时返回参数c,出错时返回EOF。
线程安全特征
接口 | 特征 | 值 |
fgetc(), fgets(), getc(),getchar(), ungetc() | 线程安全 | 多线程安全 |
标准
遵循POSIX.1-2001, POSIX.1-2008, C89, C99。
上述的函数和底层的read函数混合调用是不明智的、结果是未定义的而且往往是
非预期的。
推荐阅读
read,write,ferror,fgetwc,fgetws,fopen,fread,fseek,getline,gets,getwchar,
puts,scanf,ungetwc,unlocked_stdio,feature_test_macros
版本记录
这个页面是Linux man-pages项目4.04版本的一部分。关于该项目的信息和bug
报道可以在该网站找到:http://www.kernel.org/doc/man-pages/。
2015-08-08