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");
}

相关信息