📜  fgets langage - C 编程语言(1)

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

fgets()函数

在C编程语言中,fgets()是一个输入函数,它允许一个字符串在程序中被读取,直到一个制定的定界符被遇到为止,或者在读取最大数目的字符之后停止。fgets()函数可以从文件中读取一行,也可以从键盘输入读取一行。

语法
char *fgets(char *str, int n, FILE *stream)

其中,

  • str:将读取的字符串存储到指定的字符数组中。
  • n:读取的字符数,包括最大的可能字符和空字符。
  • stream:从中读取的流。
用法

fgets()函数的一般用法可以概括为以下几个步骤:

  • 声明读取字符的缓冲区 char buffer[MAX_LENGTH]。
  • 打开文件或者指定输入流等。
  • 使用 fgets() 函数读取缓冲区。
  • 对读入的数据进行操作:如分词、分句或分割文本等。

下面是一个从文件中读取一行的例子:

#include <stdio.h>

#define MAX_LENGTH 256   // 缓冲区的最大长度

int main() {
    char buffer[MAX_LENGTH];    // 定义一个缓冲区用于存储读取的字符

    FILE *fp = fopen("test.txt", "r");   // 打开文件测试用例
    if (fp == NULL) {
        printf("Error: Open file failed.\n");
        return -1;
    }

    while (fgets(buffer, MAX_LENGTH, fp)) {   // 从文件中读取一行
        printf("%s\n", buffer);
    }

    fclose(fp);   // 关闭文件

    return 0;
}

fgets()函数也可以从键盘输入读取一行,代码如下:

#include <stdio.h>

#define MAX_LENGTH 256   // 缓冲区的最大长度

int main() {
    char buffer[MAX_LENGTH];    // 定义一个缓冲区用于存储读取的字符

    printf("Please input a string:\n");
    fgets(buffer, MAX_LENGTH, stdin);    // 从键盘读取一行字符

    printf("Your input is: %s", buffer);

    return 0;
}
注意事项
  • fgets()函数返回的字符串中包括换行符 '\n',异常情况下可能读取到一些意外字符。
  • 从stdin读取的字符串不会包括回车符 '\r',需要手动处理。
  • fgets()函数比gets()函数更为安全,可以避免缓冲区溢出的问题。
  • 缓冲区大小要足够大,以便能够读取整个字符串,否则可能导致截断。
  • 当fgets()函数遇到文件结束符或读取到最大字符数时,停止读入。
  • 如果fgets()函数成功,则返回读入字符串的指针,否则返回 NULL。
结论

fgets()函数是C编程语言中一个非常有用的输入函数,可以从文件或键盘中读取字符串,并在缓冲区中存储这些数据以便进一步处理。与其他输入函数相比,fgets()函数更为安全,可以避免缓冲区溢出问题,但需要注意输入中的换行符和隐藏字符。因此,程序员在代码中应该多加使用fgets()函数,避免他们的代码被黑客探测并攻击。