fgets ()- 读取字符串
格式
#include <stdio.h>
char *fgets (char *string, int n, FILE *stream);
语言级别
ANSI
线程安全
是
描述
fgets()
函数从当前 流 位置读取字符,直到 (包括) 第一个换行符 (\n) ,直到流结束,或者直到读取的字符数等于 n-1 (以先到者为准)。 fgets()
函数将结果存储在 string 中,并将空字符 (\0) 添加到字符串的末尾。 string 包含换行符 (如果读取)。 如果 n 等于 1 ,那么 string 为空。
返回值
如果成功, fgets()
函数将返回指向 string 缓冲区的指针。 NULL 返回值指示错误或文件结束条件。 使用 feof()
或 ferror()
函数来确定 NULL 值是指示错误还是文件结束。 在任一情况下,字符串的值都保持不变。
使用 type=record打开的文件不支持 fgets()
函数。
errno 的值可以设置为:
- 值
- 含义
- EBADF
- 文件指针或描述符无效。
- ECONVERT
- 发生转换错误。
- ENOTREAD
- 未打开该文件以执行读操作。
- EGETANDPUT
- 在写操作之后发生了不允许的读操作。
- ERECIO
- 文件已打开以进行记录 I/O。
- 埃斯特丁
- 无法打开
stdin
。 - EIOERROR
- 发生了不可恢复的I/O错误。
- EIORECERR
- 发生了可恢复的I/O错误。
示例
此示例从数据流获取一行输入。 此示例读取的字符不超过 MAX_LEN-1 个字符,或者从流中读取的字符最多为换行符。
#include <stdio.h>
#define MAX_LEN 100
int main(void)
{
FILE *stream;
char line[MAX_LEN], *result;
stream = fopen("mylib/myfile","rb");
if ((result = fgets(line,MAX_LEN,stream)) != NULL)
printf("The string is %s\n", result);
if (fclose(stream))
perror("fclose error");
}