当前位置: 首页 > news >正文

【C语言】 使用fgets和fputs完成两个文件的拷贝

目录

1、使用fgets和fputs完成两个文件的拷贝

2、使用fgets统计给定文件的行号


  1. fgets和fputs的使用方法
  2. 函数原型:int fputs(const char *s,FILE *stream);
                      char *fgets(char *s,int size,FILE *stream);
  3. fupts的功能:将给定的字符串写入到文件中
                返回值:成功返回写入的字符个数,失败返回EOF
     
  4. fgets的功能:将stream所指向的文件中,最多读取size-1个字符到s中,在读取过程中,如果遇到回车或者文件会结束,会结束本次读取,并且把回车也放入到容器中。在后面自动加上'\0'。
                返回值:成功返回容器的起始地址,失败返回NULL

        遇到的问题:在从终端进行输入的时候,./a/out text.txt dest.txt,会把text.txt给到argv[1],dest.txt会给到argv[2];在写本次代码的时候:
        在执行text = fopen(argv[1],"r");   dest = fopen(argv[2],"w+")这两个语句的时候,给argv[1]和argc[2]的外面加上了双引号" ",导致程序无法顺利执行


1、使用fgets和fputs完成两个文件的拷贝

#include <myhead.h>int main(int argc, 	const char *argv[])
{FILE *text = NULL,*dest = NULL;//判断是否合法输入if(argc != 3){printf("error\n");printf("you should input:./a.out file1 file2\n");    //该如何输入才合法return -1;}//打开文件,从终端输入两个文件text = fopen(argv[1],"r");        //以只读的形式打开dest = fopen(argv[2],"w+");       //以可读可写的形式打开//判断是否成功打开if(text == NULL || dest == NULL){perror("fopen error");return -1;}//成功打开,执行拷贝逻辑char buf[30] = {""};    //定义一个容器,用来接受读取的值while((fgets(buf,sizeof(buf),text)) != NULL){fputs(buf,dest);}fclose(text);fclose(dest);return 0;
}

输出结果如下:

2、使用fgets统计给定文件的行号

#include <myhead.h>int main(int argc, 	const char *argv[])
{FILE *fp = NULL;//判断终端输入文件格式是否正确if(argc != 2){printf("error");printf("you should input:./a.out file1\n");return -1;}//判断文件是否成功打开if((fp = fopen(argv[1],"r")) == NULL){perror("fopen error");return -1;}//定义一个容器和一个计数器char line[1024] = "";int len = 0;//成功打开后,执行统计行号逻辑while((fgets(line,sizeof(line),fp)) != NULL){len++;}//关闭文件fclose(fp);printf("该文件有%d行\n",len);return 0;
}

输出结果如下:

http://www.lryc.cn/news/407278.html

相关文章:

  • 使用PyTorch导出JIT模型:C++ API与libtorch实战
  • Python——异常捕获,传递及其抛出操作
  • 【Maven】 的继承机制
  • 微信小程序结合后端php发送模版消息
  • sqlalchemy报错sqlalchemy.orm.exc.DetachedInstanceError
  • 华为网络模拟器eNSP安装部署教程
  • 【React】详解样式控制:从基础到进阶应用的全面指南
  • 【ROS2】高级:安全-理解安全密钥库
  • C语言 ——— 数组指针的定义 数组指针的使用
  • opencascade AIS_ManipulatorOwner AIS_MediaPlayer源码学习
  • 如何防止用户通过打印功能复制页面文字
  • Python3网络爬虫开发实战(3)网页数据的解析提取
  • 基于 HTML+ECharts 实现监控平台数据可视化大屏(含源码)
  • 立创梁山派--移植开源的SFUD和FATFS实现SPI-FLASH文件系统
  • MySQL之视图和索引实战
  • 快速参考:用C# Selenium实现浏览器窗口缩放的步骤
  • MyBatis 插件机制、分页插件如何实现的
  • CentOS6.0安装telnet-server启用telnet服务
  • H5+CSS+JS工作性价比计算器
  • Linux:基础命令学习
  • 遇到Websocket就不会测了?别慌,学会这个Jmeter插件轻松解决....
  • 高性能 Java 本地缓存 Caffeine 框架介绍及在 SpringBoot 中的使用
  • Http 和 Https 的区别(图文详解)
  • DP学习——外观模式
  • Vue3 + Vite 打包引入图片错误
  • 搭建NFS、web、dns服务器
  • C++的UI框架和开源项目介绍
  • SpringBoot连接PostgreSQL+MybatisPlus入门案例
  • vue3里将table表格中的数据导出为excel
  • 【算法】分布式共识Paxos