c 标准库字符输入输出
按功能分类
读取一个字符
getchar |
Get character from stdin (function) |
getc |
Get character from stream (function) |
fgetc |
Get character from stream (function) |
1 2 3
| int getchar ( void ); int getc ( FILE * stream ); int fgetc ( FILE * stream );
|
第一个是从 stdin 中读取, 后两个都是从 FILE * 中读取但是 getc 可能被实现为宏, 返回值都为 int.
当成功时, 返回被读取的字符 (会被提升为 int); 当读取失败时返回 EOF, 需检测 feof 和 ferror 函数来检测是读到文件尾或是发生错误
.
写入一个字符
putchar |
Write character to stdout (function) |
putc |
Write character to stream (function) |
fputc |
Write character to stream (function) |
1 2 3
| int putchar ( int character ); int putc ( int character, FILE * stream ); int fputc ( int character, FILE * stream );
|
当写入时 character 会被强制为 unsigned int.
成功时返回写入的字符, 失败时返回 EOF, 应检测 ferror.
读取一行
gets |
Get string from stdin (function) |
fgets |
Get string from stream (function) |
1 2
| char * gets ( char * str ); char * fgets ( char * str, int num, FILE * stream );
|
分别从 stdin 和 stream 中读取一行字符保存到 str 中, 使用 gets 比较危险可能会造成缓冲区溢出. `当使用 fgets 时最多会读取 num 个字符`.
当成功读取时, 返回参数 str. 当第一个字符就为 EOF 时, 返回 NULL. 当遇到错误时返回 NULL. 所以应检测 feof 和 ferror.
写入一行
puts |
Write string to stdout (function) |
1
| int puts ( const char * str );
|
将 str 写到 stdout, 并且在后面加一个 \ n
成功时返回非零值, 出错时返回 EOF
.
写入字符串
fputs |
Write string to stream (function) |
1
| int fputs ( const char * str, FILE * stream );
|
和 puts 不同, 这个不在 str 后添加 \ n 字符
成功时返回非零值, 出错时返回 EOF
.
读回
ungetc |
Unget character from stream (function) |
1
| int ungetc ( int character, FILE * stream );
|
将 character 写回 stream 中
成功时返回 character, 失败时返回 EOF
[EOF]