实现在text1.txt和text2.txt文件中除去首行和末尾对应的数据,要求三个文本内容如下:

   text1                  text2                      text3begin                  begin                      begin10 11 12               15 16 17                   25 27 2920 21 22               25 26 27                   45 47 4930 31 32               35 36 37                   65 67 69end                    end                        end

这个程序需要用到fopen()函数,对text1和text2需要只读”r+”,而text3需要创建并写入”w+”,当检测到text1中是数字时,就可以将text1和text2中的内容相加,在text1,text2和text3中分别定义一个char型,ch1,ch2,ch3,在赋值时要注意赋值语句是ch3=ch1+ch2-‘0’,因为ch1和ch2都是字符直接相加并不能得到相应的结果,要减去一个字符‘0’。
第一种用fgetc()和fputc()函数 具体源程序如下:

#include <stdio.h>
#include <string.h>  // 函数功能:打开文件
FILE* Fopen (const char *path, const char *mode)
{FILE* fp = fopen (path, mode);if (NULL == fp){perror ("fopen path");return;}return fp;
} int main()
{
// 不调用函数
/*************************************************************FILE *fp1= fopen("text1.txt", "r+");  if (text1 == NULL)  {  perror("fopen text1.txt");  return 0;  }  FILE *fp2 = fopen("text2.txt", "r+");  if (text2 == NULL)  {  perror("fopen text2.txt");  return 0;  }  FILE *fp3= fopen("text3.txt", "w+");  if (text3 == NULL)  {  perror("fopen text3.txt");  return 0;  }
***********************************************************/FILE *fp1= Fopen ("text1.txt", "r+");FILE *fp2= Fopen ("text2.txt", "r+");FILE *fp3= Fopen ("text3.txt", "w+");char ch1;  char ch2;  char ch3; // 读取分辨1和2中的数据,相加存入3中while (1)  {  ch1 = fgetc(fp1);  if (ch1 == EOF)  {  break;  }  ch2 = fgetc(fp2);  if (ch2 == EOF)  {  break;  }  if (ch1 >= '0' && ch1 <= '9')       // 判 断是否是数字{  ch3 = ch1 + ch2 - '0';  fputc(ch3,fp3);  }  else if(fputc(ch1, fp3) == EOF)     // 不是则直接写入3中  {  perror("fputc");  break;  }   }  fclose(fp1);  fclose(fp2);  fclose(fp3);  return 0;
} 

下面是不用fgetc()和fputc()函数的写法 具体源程序如下:

#include <stdio.h>#define SIZE 10// 函数功能:打开文件
FILE* Fopen (const char *path, const char *mode)
{FILE* fp = fopen (path, mode);if (NULL == fp){perror ("fopen path");return;}return fp;
} int main()
{FILE *fp1 = Fopen ("text1.txt", "r+");FILE *fp2 = Fopen ("text2.txt", "r+");FILE *fp3 = Fopen ("text3.txt", "w+");int ret1;int ret2;char buf1[SIZE] = {0};char buf2[SIZE] = {0};// 读取并分辨1和2中的数据,相加存入3中,结束标志为2中数据读完while(ret1 = fread (buf1, sizeof(char), 1, fp1)){       ret2 = fread (buf2, sizeof(char), 1, fp2);// 退出循环条件:1或2读完if(ret2 == 0 && !feof(fp2)){perror("fread");return -1;}if(ret1 == 0 && !feof(fp1)){perror("fread");return -1;}// 判断是否是数字,是则进行运算,不是则直接导入3if(buf1[0] >= '0' && buf1[0] <= '9'){char tmp[1] = {0};tmp[0] = buf1[0] + buf2[0] - '0';fwrite(tmp, sizeof(char), 1, fp3);}else{fwrite(buf1,sizeof(char),1,fp3);}}close(fp1);close(fp2);close(fp3);return 0;
}

手动创建两个文本文件text1.txt和text2.txt,按要求创建text3.txt相关推荐

  1. 创建一个vehicle类并将它声明为抽象类_java_创建一个vehicle接口

    在两个名称分别为 Bike 和 Bus 的类中实现 Vehicle 接口.创建一个名 称为 interfaceDemo 的类,在 interfaceDemo 的 main()方法中创建 Bike 和 ...

  2. 10-8 猫和狗 : 创建两个文件cats.txt和dogs.txt, 在第一个文件中至少存储三只猫的名字, 在第二个文件中至少存储三条狗的名字。 编写一个程序, 尝试读取这些文件, 并将其内容打印到

    10-8 猫和狗 : 创建两个文件cats.txt和dogs.txt, 在第一个文件中至少存储三只猫的名字, 在第二个文件中至少存储三条狗的名字. 编写一个程序, 尝试读取这些文件, 并将其内容打印到 ...

  3. java比对文本文件_Java编程实现比对两个文本文件并标记相同与不同之处的方法...

    本文实例讲述了Java编程实现比对两个文本文件并标记相同与不同之处的方法.分享给大家供大家参考,具体如下: 使用需求: 文件1里面是需要比较的内容,文件2是被比较的文本,现在需要找到在文件1中每一行的 ...

  4. 两个主键怎么设置tsql_索引该怎么创建?

    1.2.索引 B+Tree 结构的特性: ①.B+Tree 只有叶子节点会存储真实的数据,非叶子节点只会存储索引字段值: ②.B+Tree的叶子节点之间使用 双向链表 链接,所以更加适合范围查询和排序 ...

  5. PHP 比较两个文本文件差异 A diff implementation for PHP

    实例DEMO:http://sources.ikeepstudying.com/diff/ Download Diff Download the file below and upload it to ...

  6. linux两个子进程通信,Linux c 匿名管道实例—创建两个子进程与父进程进行管道通信...

    综合: 建立两个子进程: 一个负责计算1-50000的素数 另外一个负责计算50001-100000 父进程负责存储 利用fork创建两个子进程的框架: #include #include #incl ...

  7. 在线部分:werobot服务、主要逻辑服务、句子相关模型服务、BERT中文预训练模型+微调模型(目的:比较两句话text1和text2之间是否有关联)、模型在Flask部署

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 智能对话系统:Unit对话API 在线聊天的总体架构与工具介绍 ...

  8. python用sqlite数据库创建的表在哪里_用Python在sqlite3数据库中创建两个表

    我似乎找到了很多关于如何使用两个表的教程,但我似乎不知道如何创建两个表.我可能错过了一些很简单的东西.在 我想为"我的"数据"1"和"我的" ...

  9. R创建两个变量的直方图

    R创建两个变量的直方图 直方图是可视化给定变量值分布的有效方法. 要为R中的一个变量创建直方图,可以使用hist()函数.要为R中的两个变量创建直方图,可以使用以下语法: hist(variable1 ...

最新文章

  1. 齐鲁师范学院计算机专业在那个校区,齐鲁师范学院有几个校区及校区地址 哪个校区最好...
  2. 实践--课程表(仿超级课程表展示课表)
  3. java循环停止_什么时候java无限循环停止?
  4. win10兼容模式怎么设置_win10护眼模式关不掉怎么办
  5. 查询ecshop网站代码排查方法_提升网站访问速度,提升网站访问速度,提升网站访问速度的个人经验分享...
  6. PHP_VERSION获取php版本
  7. IBM 重磅开源 Power 芯片指令集!国产芯迎来新机遇?
  8. Linux:Vim的安装与配置
  9. delphi10 ftp文件名乱码问题
  10. linux服务器硬盘检测,在Linux服务器中检查硬盘坏道的命令
  11. 数组输出c语言getchar,C语言入门 — getchar
  12. 汽车4G车载TBOX智能终端
  13. 关于c4d在给模型添加FFD时,遇到拉升FFD里的点,而模型没有任何变化的解决方法
  14. ffmpeg将图片合成视频
  15. 电路基础(3)电阻电路等效变换的经典例题
  16. 图解CRM(客户关系管理)全流程 1
  17. core java第十版_java核心技术第十版 笔记
  18. 苹果账号被禁用怎么办?
  19. 人工智能翻译能否取代人工翻译
  20. java火焰_现代化的Java(十三)——火焰图

热门文章

  1. oracle内存锁,Oracle OCP之硬解析在共享池中获取内存锁的过程
  2. java 主备切换_keepalived 实现 Java 服务的高可用(主备切换)
  3. druid mysql配置详解_druid 参数配置详解
  4. dvwa详解_DVWA(六):XSSReflected 反射型XSS全等级详解
  5. 计算机图形学考试题及答案_计算机图形学考试题及答案
  6. 解决ckeditor富文本在layui 弹框中大小字体等下拉不显示
  7. 机器学习知识总结系列- 模型评估(1-2)
  8. java 累进计费率计算_设计费400万,缴纳所得税100万,如何筹划
  9. 使用python实现对于chineseocr的API调用
  10. JM8.5中的7种宏块模式问题 - zhoujunming的专栏 - CSDN博客