📜  C++ fgets()(1)

📅  最后修改于: 2023-12-03 14:39:49.675000             🧑  作者: Mango

C++ fgets()函数介绍

fgets()函数是C++标准库中的一个流输入函数,用于从指定的流中读取一行字符。它的声明如下:

char *fgets(char *str, int n, FILE *stream);

其中,str是一个字符数组,用于存储读取到的字符;n是读取字符的最大数量;stream是要读取的文件流(stdin、stdout、stderr等常用流)。

用法示例

下面是一个使用fgets()函数从标准输入流中读取一行字符的示例:

#include <stdio.h>

#define MAX_LEN 100

int main()
{
    char input[MAX_LEN+1]; // 加1是为了存储字符串结尾的'\0'
    printf("Please enter a string: ");
    if (fgets(input, MAX_LEN, stdin) != NULL)
    {
        printf("You entered: %s", input);
    }
    return 0;
}

在上面的示例中,首先定义了一个char类型的数组input,用于存储输入的字符串。然后使用printf()函数输出提示信息。接下来,使用fgets()函数从标准输入流stdin中读取一行字符,并将结果存储到input数组中。最后,使用printf()函数输出输入的字符串。

需要注意的是,fgets()函数每次最多只能读取n-1个字符(前提是读取到了一整行,否则可能读取的字符数更少),最后还会在末尾自动添加一个\0字符表示字符串结尾。因此,在定义字符数组时,需要留出1个字符的空间用于存储字符串结尾。

注意事项

使用fgets()函数时需要注意以下几点:

  1. fgets()函数每次读取的是一整行字符,包括换行符\n。因此,如果需要去除换行符,可以使用strtok()函数。
  2. fgets()函数返回的结果可能包含EOF(文件结束符),因此在使用时应该先检查返回值是否为NULL,以避免程序异常终止。
  3. 在使用fgets()函数读取字符数组时,如果n比实际读取到的字符数少,则会在末尾自动添加\0字符表示字符串结尾。因此,在定义字符数组时需要留出1个字符的空间用于存储字符串结尾。
总结

fgets()函数是C++标准库中一个常用的流输入函数,可用于读取一行字符或读取固定数量的字符并将结果存储到字符数组中。在使用时,需要注意函数返回值是否为NULL以及读取的字符数是否超出了字符数组的长度。