GETS
Section: Linux Programmer's Manual (3)
Updated: 1993-04-04
Index
NAME
fgetc, fgets, getc, getchar, gets, ungetc - 输入字符和字符串
总览 (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 .
遵循 (CONFORMING TO)
ANSI - C, POSIX.1
BUGS
永远 不要 使用
gets().
由于
gets()
事先 不知道 数据内容, 因此 不可能 知道 应该 读取 多少 字符, 而且
gets()
会 连续 接收 字符, 即使 越过 缓冲区 的 末尾 也 不停止, 所以 这个 函数 非常
危险. 它 曾经 被用来 破坏 计算机系统 的 安全. 用
fgets()
代替.
建议 不要 混合
stdio
库的 输入函数 和 低层
read()
函数 对 输入流 对应 文件描述符 的 调用; 其 结果 没有 定义, 极可能
不是 你 需要的.
另见 (SEE ALSO)
read(2),
write(2),
ferror(3),
fopen(3),
fread(3),
fseek(3),
puts(3),
scanf(3),
unlocked_stdio(3)
[中文版维护人]
徐明 Email: xuming@users.sourceforge.net
[中文版最新更新]
2004/08/20
第一版
《中国Linux论坛man手册页翻译计划》
http://cmpp.linuxforum.net
Index
- NAME
-
- 总览 (SYNOPSIS)
-
- 描述 (DESCRIPTION)
-
- 返回值 (RETURN VALUE)
-
- 遵循 (CONFORMING TO)
-
- BUGS
-
- 另见 (SEE ALSO)
-
- [中文版维护人]
-
- [中文版最新更新]
-
- 《中国Linux论坛man手册页翻译计划》
-
This document was created by
man2html,
using the manual pages.
Time: 01:46:58 GMT, August 26, 2004