fgets函数用法用法介绍(C语言fgets函数详解)

一、 fgets函数基础概念

1、fgets函数的作用

Fgets函数是一个很常用的C语言函数,它可以帮助我们从文件或者标准输入中读取指定长度的数据,直到遇到指定的结束字符为止。

2、fgets函数的语法

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

Fgets函数包含三个参数:第一个参数是一个字符指针,用于保存从文件或标准输入中读取的指定长度的数据;第二个参数指定了从文件或标准输入中读取数据的最大长度;第三个参数指定了需要读取的文件或者标准输入流。

3、fgets函数的返回值

如果读取成功,fgets函数返回保存读取数据的字符指针,否则返回NULL。

二、 fgets函数详细使用

1、从文件中读取数据

Fgets函数可以从打开的文件中读取数据。下面的代码演示了从一个文件中读取数据:

#include<stdio.h>
int main()
{
    FILE *fp;
    char str[60];
    fp = fopen("test.txt", "r");
    if(fp == NULL)
    {
        printf("文件打开失败");
        return 1;
    }
    while(fgets(str, 60, fp) != NULL)
    {
        printf("%s", str);
    }
}

解释:

  • 首先需要指定要打开的文件名以及打开方式。文件名的“test.txt”就是我指定的文件名,如果你要读取别的文件,就需要修改文件名;打开方式“r”表示只读。
  • 其次需要判断文件是否成功打开,如果打开失败,会返回NULL。
  • 然后开始循环读取数据。每次读取一行数据,读取的最大长度为60。
  • 如果文件已经读取到结尾,fgets函数返回NULL,就会结束循环。
  • 最后关闭文件。

2、从标准输入中读取数据

我们可以通过从键盘输入数据,然后用fgets函数读取这些数据。下面的代码演示了如何从标准输入读取数据:

#include<stdio.h>
int main()
{
    char str[60];
    printf("请输入字符串:");
    fgets(str, 60, stdin);
    printf("你输入的内容为:%s", str);
}

解释:

  • 使用printf函数输出提示信息,要求用户输入字符串;
  • 使用fgets函数从标准输入中读取字符串;最后使用printf函数输出读取到的字符串。
  • stdin表示“standard input”,即标准输入,这里用来指定从标准输入中读取。

三、fgets函数的注意事项

1、fgets函数的返回值判断

在使用fgets函数的时候,我们需要注意返回值的判断。如果fgets函数返回NULL,则表明已经读取到文件结尾了。如果不判断此返回值,会导致程序死循环等问题。

2、fgets函数会读取换行符

在使用fgets函数从文件或者标准输入中读取数据时,一定要注意它会读取换行符,而且在字符串的最后一个字符后面加上了”。

3、处理fgets函数读取的多余字符

在使用fgets函数从文件或者标准输入中读取数据时,有可能会读取到多余的字符或空行。这时候,我们需要自己去掉它们。例如下面的代码:

#include<stdio.h>
#include<string.h>
int main()
{
    char str[60];
    printf("请输入字符串:");
    fgets(str, 60, stdin);
    if(str[strlen(str)-1] == 'n')
    {
        str[strlen(str)-1] = '';
    }
    printf("你输入的内容为:%s", str);
}

解释:

  • 使用if语句判断最后一个字符是否为换行符;
  • 如果是,则将它替换为结束字符”,也就是去掉换行符;
  • 最后使用printf函数输出读取到的字符串。

4、从文件中读取数据时,注意文件编码格式

如果从文件中读取数据,在文件编码格式不同时,需要注意不同编码格式下,换行符的表示方式不同。例如在windows系统下,文件的换行符为“rn”;而在Unix或者Linux系统下,文件的换行符为“n”。如果代码在不同操作系统下编译,需要注意编码格式的不同,需要正确读取换行符。

四、小结

本文详细介绍了fgets函数的用法,包括从文件中读取数据、从标准输入中读取数据等基础用法,并介绍了fgets函数需要注意的注意事项。在使用fgets函数时,需要注意检查返回值,去掉多余的字符和空行,以及处理不同编码格式下的换行符表示方式。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平