总览 (SYNOPSIS)
#include <stdio.h> int fgetc(FILE *stream); char *fgets(char *s, int size, FILE *stream); int getc(FILE *stream); int getchar(void); char *gets(char *s); int ungetc(int c, FILE *stream);
描述 (DESCRIPTION)
fgetc() 从 stream 流 中 读取 下一个 字符, 然后 从 unsigned char 类型转换 到 int 型 返回, 如果 到达 文件末尾 或 出现 错误 则 返回 EOF .
getc() 等于 fgetc() , 只是 它 可能 以 宏 的 形式 实现, 并 多次 访问 stream 流.
getchar() 等于 getc(stdin).
gets() 从 stdin 读取 一行 字符串, 保存在 s 指向的 缓冲区 中, 读到 换行符(newline) 或 EOF 时 操作 结束, 同时 把 它们 替换为 '\0'. 该函数 不检查 缓冲区溢出 (参见 后面的 BUGS 节).
fgets() 从 stream 流 中 读取 多至 size - 1 个 字符, 保存在 s 指向的 缓冲区 中, 读到 换行符(newline) 或 EOF 时 操作 结束, 如果 读到的 是 换行符, 把 换行符 也保存在 缓冲区 中. 函数 将在 最后一个 字符 后面 添加 一个 '\0' 字符.
ungetc() 把 c 转换为 unsigned char 类型 并 回送到 stream 中 供 后续的 读操作 读取. 回送的 所有 字符 将按 相反的 顺序 返回; 只保证 一个 回送 操作 的 可靠.
这里 描述的 函数 可以 混合 使用, 也可以 结合 stdio 库中 其他的 输入函数 处理 同一个 输入流.
相应的 无锁函数(non-locking) 参见 unlocked_stdio(3).
返回值 (RETURN VALUE)
fgetc(), getc() 和 getchar() 返回 从 unsigned char 类型转换 到 int 型 的 字符, 如果 操作 失败 或 到达 文件末尾 则 返回 EOF .
如果 操作 成功, gets() 和 fgets() 返回 s 指针, 否则 返回 NULL 指针, 如果 到达 文件末尾 时 还没有 读到 字符 也返回 NULL .
操作 成功 时 ungetc() 返回 c , 否则 返回 EOF .
来源:https://www.cnblogs.com/fanweisheng/p/11082518.html