fgets函数定义在C语言标准库(stdio.h)中,用于从一个指定的流(如标准输入流或文件流)中读取最多n个字符到一个用str指向的字符串。
C语言的fgets函数会读取字符,直到遇到文件结束(EOF)、换行符或读取了n-1个字符。
本快速教程将讨论如何在C程序中使用fgets函数。
基本用法
C语言fgets函数的一般语法如下。
char* fgets(char* str, int n, FILE* stream);
该函数接受三个参数,即
- str:一个指向字符数组的指针,读到的字符串值被添加到其中。
- n:一个整数值,定义要添加到str中的最大字符数。最大数量包括空结束符。
- stream:一个描述文件对象的指针,用于识别输入流。
Fgets的返回值
在成功执行时,该函数将返回str。如果函数遇到错误,它将返回一个空指针。同样地,如果函数由于EOF而终止,没有读到任何字符,它将返回一个空指针。
注意:尽管换行符会迫使fgets函数停止,但它仍然作为一个有效的字符包含在复制的字符串中。
Fgets函数实例
让我们举例说明如何在C语言中使用fgets函数,请看下面的示例代码。
#include <stdio.h>
intmain() {
FILE *fptr;
char str[100];
// open file for read
fptr = fopen("fgets.txt", "r");
if (fptr == NULL) {
perror("[-] Error Encountered while opening file!");
return-1;
}
else {
if (fgets(str, 100, fptr) !=NULL){
puts(str);
}
fclose(fptr);
}
return0;
}
在上面的例子中,fgets函数将打开fgets.txt文件,读取前100-1(99)个字符,并将它们打印在屏幕上。
如果我们假设fgets.txt文件的内容是。
Hello world!,这就是C语言中的fgets函数。
编译和执行上述代码应该能打印出上述几行。
提示:与gets函数不同,fgets函数更安全,因为它检查数组的边界,防止缓冲区溢出。
总结
这个简短的指南讨论了如何使用C语言中的fgets函数从一个流中读取字符,直到满足特定的条件。
祝大家C语言时间愉快!