fgetc, getc
From cppreference.net
|
定义于头文件
<stdio.h>
|
||
|
int
fgetc
(
FILE
*
stream
)
;
|
(1) | |
|
int
getc
(
FILE
*
stream
)
;
|
(2) | |
1)
从给定的输入流中读取下一个字符。
2)
与
fgetc
相同,不同之处在于:如果
getc
被实现为宏,它可能会多次计算流参数,因此对应的参数绝不应是带有副作用的表达式。
目录 |
参数
| stream | - | 读取字符的输入源 |
返回值
成功时,返回获取的字符(作为 unsigned char 转换为 int )。 失败时,返回 EOF 。
若失败由文件结束条件引起,则额外设置流上的 eof 指示符(参见 feof() )。若失败由其他错误引起,则设置流上的 error 指示符(参见 ferror() )。
示例
运行此代码
#include <stdio.h> #include <stdlib.h> int main(void) { const char* fname = "/tmp/unique_name.txt"; // 或使用 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; // 注意:必须使用 int 而非 char 类型来处理 EOF while ((c = fgetc(fp)) != EOF) // 标准 C I/O 文件读取循环 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函数(页码:296)
-
- 7.19.7.5 getc函数(页码:297-298)
- C89/C90 标准 (ISO/IEC 9899:1990):
-
- 4.9.7.1 fgetc 函数
-
- 4.9.7.5 getc 函数
参考
|
从
stdin
读取一个字符
(函数) |
|
|
(C11中移除)
(C11)
|
从
stdin
读取字符串
(函数) |
|
向文件流写入一个字符
(函数) |
|
|
将字符回退到文件流中
(函数) |
|
|
C++ 文档
关于
fgetc
,
getc
|
|