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

3c610b7c96b5e3da5c2e4f22113b6e3e.png

点击上方蓝字关注我,了解更多咨询

d64147af8e0907455f59ea65af955f1d.png

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

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

格式说明:

  • 第 1 个参数“字符串指针”可以是一个字符数组名,也可以是字符指针,用于存放读出的字符串;

  • 第 2 个参数是一个整型数,用来指明读出字符的个数;

  • 第 3 个参数“文件指针”指向一个已经打开并正在操作的文件。


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

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

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

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

  • 已读取了 n-1 个字符。

  • 当前读取的字符是回车符。

  • 已读取到文件末尾。

示例

应用 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”语句用于测试从键盘输入的字符串是否为空串(即只输入回车符)。

28ced22980a4d52410d814c13e02ad60.png

END

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

c4afc2bc9ab15adb59ebaad167128599.png

a213cd81fb8ad2198e6340065d070502.gif

戳“阅读原文”我们一起进步

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值