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')。