fgets函数

admin 33 0

fgets函数:从文件中读取一行数据

在C语言中,fgets函数用于从指定的流中读取一行数据,并将其存储在字符数组中,它比gets函数更安全,因为它可以指定读取的最大字符数,从而避免缓冲区溢出。

fgets函数的原型如下:

```c

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

其中,str是指向字符数组的指针,用于存储读取的数据;n表示要读取的最大字符数(包括空字符);stream是指向FILE对象的指针,指定要读取的文件流。

下面是一个简单的示例代码,演示如何使用fgets函数从文件中读取一行数据:


```c
#include <stdio.h>

int main() {
    FILE *fp;
    char str[100];
    fp = fopen("file.txt", "r"); // 打开文件
    if (fp == NULL) {
        printf("Failed to open file.\n");
        return 1;
    }
    while (fgets(str, 100, fp) != NULL) { // 逐行读取文件内容
        printf("%s", str); // 输出读取的数据
    }
    fclose(fp); // 关闭文件
    return 0;
}

在上面的代码中,我们首先使用fopen函数打开一个名为"file.txt"的文件,并将其存储在FILE指针fp中,我们使用while循环和fgets函数逐行读取文件内容,并将其存储在字符数组str中,我们使用printf函数输出读取的数据,我们在调用fgets函数时指定了要读取的最大字符数为100,以避免缓冲区溢出,我们使用fclose函数关闭文件。

需要注意的是,fgets函数会读取换行符('\n')并将其存储在字符数组中,如果文件中的某一行以换行符结尾,那么该行在输出时也会以换行符结尾,如果需要去掉换行符,可以使用字符串处理函数将其替换为空字符('\0')。