首页 > 编程笔记 > C语言笔记

C语言fgets()函数的返回值是什么?

C语言 fgets() 函数是一个常用的输入函数,用于从指定的文件流中读取字符串,它的原型如下:

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

fgets() 函数的返回值是一个指向 char 的指针。具体来说,它有两种可能的返回值:


让我们通过一个简单的例子来说明 fgets() 的使用和返回值:

#include 
#include 

int main() {
    char buffer[100];
    char *result;

    printf("请输入一行文本:\n");
    result = fgets(buffer, sizeof(buffer), stdin);

    if (result != NULL) {
        printf("读取成功。输入的内容是:%s", buffer);
        printf("fgets() 返回的指针值:%p\n", (void*)result);
        printf("buffer 的地址:%p\n", (void*)buffer);
    } else {
        printf("读取失败或到达文件末尾。\n");
    }

    return 0;
}

在这个例子中,我们使用 fgets() 从标准输入(stdin)读取一行文本。然后,我们检查 fgets() 的返回值来确定是否成功读取了输入。


如果成功读取,程序将打印输入的内容,并显示 fgets() 返回的指针值和 buffer 的地址。你会发现这两个值是相同的,因为 fgets() 在成功时返回传入的 buffer 指针。


运行这个程序,可能会得到类似下面的输出:

请输入一行文本:
Hello, World!
读取成功。输入的内容是:Hello, World!
fgets() 返回的指针值:0x7ffd5e8b9810
buffer 的地址:0x7ffd5e8b9810

值得注意的是,fgets() 函数会读取换行符(如果存在的话),并将其包含在返回的字符串中。如果输入的行超过了指定的长度(在我们的例子中是 99 个字符,因为需要留一个字符用于存储字符串结束符 '\0'),fgets() 只会读取到指定长度为止,剩余的字符会留在输入缓冲区中。


在实际应用中,我们通常会这样使用 fgets() 的返回值:

while (fgets(buffer, sizeof(buffer), file) != NULL) {
    // 处理读取到的每一行
}

这个循环会一直读取文件,直到遇到文件末尾或发生错误。每次成功读取一行,就会执行循环体内的代码。


理解 fgets() 的返回值对于编写健壮的 C 程序非常重要,它允许我们正确地处理输入,检测文件结束或错误情况,从而避免潜在的程序错误和安全漏洞。在处理用户输入或文件操作时,始终记得检查 fgets() 的返回值,以确保你的程序能够优雅地处理各种可能的情况。


声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。