使用FILE结构操作文本文件

任务描述

本关要求编写函数ext\fractDigit,该函数从已有的当前目录下的文件a.txt中读取并解析出其中的数值,并将结果写到当前目录下的文件b.txt中。

其中:文件a.txt中包含各种字符,但只有数字字符是有效的,提取其中的数字字符,将每3个数字组成一个整数,写到文件b.txt中,每个整数之间用一个空格分开。读取过程中,如果a.txt中最后剩下不到3个数字字符,则将剩下的1个或者2个数字字符组成一个整数。

例如:a.txt中的内容是1j3j5sd0msd454ss3msd563,则抽取出来写入文件b.txt的内容应该是135 45 435 63(第二个整数是由045三个数字组成,所以是45)。

相关知识(略)
编程要求

本关的编程任务是补全step1/fileTxt.c文件中ext\fractDigit函数,以实现使用FILE结构来操作文本文件的要求。具体要求如下:

  • 本关要求通过补全step1/fileTxt.c文件中ext\fractDigit函数来实现从已有的当前目录下的文件a.txt中读取并解析出其中的数值,并将结果写到当前目录下的文件b.txt中的要求。

  • 实际的测试样例参见下文。

测试说明

本关的测试文件是step1/main.c,其中将会调用你在step1/fileTxt.c文件中完成的ext\fractDigit函数来完成本关任务。step1/main.c的源代码如下所示:

 
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. //声明外部函数,函数ext\fractDigit在其它源文件中实现
  4. extern void ext\fractDigit();
  5. int main()
  6. {
  7. //准备文件a.txt的内容
  8. FILE *fp = fopen("a.txt","w"); //打开文件a.txt用于写
  9. char s[1000];
  10. fgets(s, 999, stdin); //从键盘读取一行字符
  11. fputs(s,fp); //将这一行字符写入文件a.txt中
  12. fclose(fp); //关闭fp关联的文件a.txt
  13. ext\fractDigit(); //调用函数,抽取数字写入文件b.txt中
  14. FILE *f = fopen("b.txt","r"); //以读的方式打开文件b.txt
  15. if(f==NULL) //打开失败则返回
  16. return 0;
  17. int n,k=0;
  18. fscanf(f,"%d",&n); //从文件b.txt中读出一个整数到变量n中
  19. while(!feof(f)) //如果文件没结束(读出的不是EOF)
  20. {
  21. k++;
  22. printf("%d ",n); //输出该整数到屏幕
  23. if(k%10==0) //每十组一换行
  24. printf("\n");
  25. fscanf(f,"%d",&n); //读取下一个整数
  26. }
  27. if(k%10!=10) //最后一行没有换行符则补上
  28. printf("\n");
  29. return 0;
  30. }

平台会对你编写的代码进行测试: 测试输入: q12h44h67k854ksd923823sf83wd38457sd433ds, 预期输出: 124 467 854 923 823 833 845 743 3

测试输入: 1212121212343434343445454545450000005656565665dfsd455 预期输出: 121 212 121 234 343 434 344 545 454 545 0 0 565 656 566 545 5


开始你的任务吧,祝你成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卑微的Coder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值