fgetc, getc
来自 cppreference.com
定义于头文件 <stdio.h> |
||
int fgetc( FILE* stream ); |
(1) | |
int getc( FILE* stream ); |
(2) | |
1) 从给定输入流中读取下一个字符。
2) 与
fgetc
相同,只是如果 getc
被实现为宏,它可能对 stream 进行多次求值,因此相应的参数不应为具有副作用的表达式。内容 |
[编辑] 参数
stream | - | 从中读取字符 |
[编辑] 返回值
成功时,返回获得的字符作为 unsigned char 转换为 int。失败时,返回 EOF。
如果失败是由文件结尾条件引起的,则还会在 stream 上设置 eof 指示器(见 feof())。如果失败是由其他错误引起的,则会设置 stream 上的 error 指示器(见 ferror())。
[编辑] 示例
运行此代码
#include <stdio.h> #include <stdlib.h> int main(void) { const char* fname = "/tmp/unique_name.txt"; // or tmpnam(NULL); int is_ok = EXIT_FAILURE; FILE* fp = fopen(fname, "w+"); if (!fp) { perror("File opening failed"); return is_ok; } fputs("Hello, world!\n", fp); rewind(fp); int c; // note: int, not char, required to handle EOF while ((c = fgetc(fp)) != EOF) // standard C I/O file reading loop putchar(c); if (ferror(fp)) puts("I/O error when reading"); else if (feof(fp)) { puts("End of file is reached successfully"); is_ok = EXIT_SUCCESS; } fclose(fp); remove(fname); return is_ok; }
可能的输出
Hello, world! End of file is reached successfully
[编辑] 参考资料
- C23 标准 (ISO/IEC 9899:2024)
- 7.21.7.1 fgetc 函数 (p: TBD)
- 7.21.7.5 getc 函数 (p: TBD)
- C17 标准 (ISO/IEC 9899:2018)
- 7.21.7.1 fgetc 函数 (p: 240-241)
- 7.21.7.5 getc 函数 (p: 242)
- C11 标准 (ISO/IEC 9899:2011)
- 7.21.7.1 fgetc 函数 (p: 330)
- 7.21.7.5 getc 函数 (p: 332)
- C99 标准 (ISO/IEC 9899:1999)
- 7.19.7.1 fgetc 函数 (p: 296)
- 7.19.7.5 getc 函数 (p: 297-298)
- C89/C90 标准 (ISO/IEC 9899:1990)
- 4.9.7.1 fgetc 函数
- 4.9.7.5 getc 函数
[编辑] 另请参阅
从 stdin 读取字符 (函数) | |
(在 C11 中移除)(C11) |
从 stdin 读取字符字符串(函数) |
将字符写入文件流 (函数) | |
将字符放回文件流 (函数) | |
C++ 文档 for fgetc, getc
|