首页 > 编程笔记

C语言fgets()函数:以字符串形式读取文件

C语言 fgets() 函数从文本文件中读取一个字符串,并将其保存到内存变量中。fgets() 函数位于 <stdio.h> 头文件中,其使用格式如下:

fgets(字符串指针,字符个数n,文件指针);

格式说明:
功能:从文件指针所指向的文本文件中读取长度不超过 n-1 的字符串,并在结尾处加上“\0”组成一个字符串,存入“字符串指针”中。

若函数调用成功,则返回存放字符串的首地址;若读到文件结尾处或调用失败时,则返回字符常量 NULL。

例如,语句 fgets(char*s,int n,FILE*fp);的含义是从 fp 指向的文件中读入 n-1 个字符,存入字符指针 s 指向的存储单元。

当满足下列条件之一时,读取过程结束。

示例

应用 fgets() 函数和 fputs() 函数建立一个文本文件,读取文件中的内容并在屏幕上显示。代码如下:
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
int main()
{
    FILE *fp1,*fp2;        /*定义两个文件指针变量fp1,fp2*/
    char str[10];
    if((fp1=fopen("file2.txt","w"))==0)    /*以只写方式新建文件file2.txt,并测试是否成功*/
    {
       printf("不能创建文件\n");
       exit(0);        /*强制退出程序*/
    }
    printf("输入字符串(以空串作为结束输入):\n");
    gets(str);        /*接收从键盘输入的字符串*/
    while(strlen(str)>0)
    {
        fputs(str,fp1);
        fputs("\n",fp1);    /*在文件中加入换行符作为字符串分隔符*/
        gets(str);
    }
    fclose(fp1);        /*写文件结束,关闭文件*/
    if((fp2=fopen("file2.txt","r"))==0) /*以只读方式新建并打开文件file2.txt,测试是否成功*/
    {
        printf("不能打开文件\n");
        exit(0);
    }
    printf("输出字符串:\n");
    while(fgets(str,10,fp2)!=0)    /*从文件中读取字符串并存放到字符数组str中,测试是否已读完*/
        printf("%s",str);        /*把数组str中的字符串输出到屏幕上*/
    printf("\n");        /*换行*/
    fclose(fp2);        /*关闭文件*/
}
运行结果:

输入字符串(以空串作为结束输入):
www.weixueyuan.net
123456!

输出字符串:
www.weixueyuan.net
123456!

本程序中定义了两个文件指针 fp1 和 fp2,分别用于写文件和读文件的操作。读者要熟悉 fgets() 函数和 fputs() 函数的使用。

第 15 行的“strlen(str)>0”语句用于测试从键盘输入的字符串是否为空串(即只输入回车符)。

优秀文章