C语言拷贝一个文件。

news2024/10/7 11:24:02

今天学习了如何用c语言拷贝一个文件,一个字符一个字符的拷贝一个文件,特此记录一下。

#include<stdio.h>


int main()
{
	FILE * pfr = fopen("1.txt", "r");  //打开文件1.txt 用读的模式
	if (pfr == NULL)
	{
		return 1;
	}
	FILE* pfw = fopen("2.txt", "w");   //打开文件2.txt 用写的模式
	if (pfw == NULL)
	{                           // 如果2.txt打开失败,就把1.txt的文件关闭,指针赋空值
		fclose(pfr);    
		pfr = NULL;
		return 0;
	}
	char ch = 0;
	while ((ch = fgetc(pfr)) != EOF)     // 循环读取1.txt的指针内容,只要不是EOF文件结束 ,就一直读
	{
		fputc(ch, pfw);                  // 把读到的内容写到2.txt中。
	}

	fclose(pfr);             //关闭文件1
	pfr = NULL;                 //指针赋空值
	fclose(pfw);             //关闭文件2
	pfw = NULL;                 //指针赋空值
}

这样就把文件1中的所有内容都拷贝到了文件2中。

1、fprintf()函数

//int main()
//{
//    struct s s = { "大家好!", 999, 3.1405926 };
//    FILE* pf = fopen("1.txt", "w");
//    if (pf == NULL)
//    {
//        perror("打开文件失败!");
//        return 1;
//    }
// 
// // fprintf是 格式化输出到指定流,也可以指定到stdio到屏幕
//    fprintf(pf, "%s %d %f", s.arr, s.a, s.b);   
//    fclose(pf);
//    pf = NULL;
//}

2、fscanf()函数

/int main()
//{
//    struct s s;
//    FILE* pf = fopen("1.txt", "r");
//    if (pf == NULL)
//    {
//        perror("打开文件失败!");
//        return 1;
//    }
// 
// // fscanf从指定流中获取数据
//    fscanf(pf, "%s %d %f", s.arr, &(s.a), &(s.b));
//
//    printf("%s %d %f", s.arr, s.a, s.b);
//    fclose(pf);
//    pf = NULL;
//    
//    return 0;
//}

3、fwrite()

//int main()
//{
//    struct S s = { "大家好!", 999, 3.1415962f };
//    FILE* pf = fopen("1.txt", "w");
//    if (NULL != pf)
//    {
//     // fwrite()以二进制的形式写入
//        fwrite(&s, sizeof(struct S), 1, pf);
//        fclose(pf);
//        pf = NULL;
//    }
//
//    return 0;
//}

4、fread()

/int main()
//{
//    struct S s = { 0 };
//    FILE* pf = fopen("1.txt", "r");
//    if (NULL != pf)
//    {
//     // fread()以二进制读取
//        fread(&s, sizeof(struct S), 1, pf);
//        fclose(pf);
//        pf = NULL;
//    }
//    printf("%s %d %f", s.arr, s.a, s.b);
//    return 0;
//}

5、fseek(pf, -1, SEEK_CUR);// 重新定义文件指针的位置

6、printf("当前地址的距离文件起始位置的偏移量:%d\n", ftell(pf));

7、 rewind(pf);    让文件指针回到起始位置  

8、scanf/fscanf/sscanf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/951939.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1.RTKLIB环境配置和调试

1.源码下载 下载链接&#xff1a;rtklib 注&#xff1a;2.4.2 p13为稳定版本&#xff08;标识p代表稳定版本&#xff09;&#xff0c;2.4.3 b34为最新实验版本&#xff08;标识b&#xff09;。点击2.4.3 b34 的Source Programs and Data 链接下载源码。 2.环境配置 **集成…

Linux系统文件权限修改:permission denied

最近遇到文件夹权限的问题 通过命令发现www缺少写和执行的权限 然后赋予所有权限 下面是一些详解&#xff1a; 要赋予文件或目录写入权限&#xff0c;可以使用 chmod 命令。 命令的基本语法是&#xff1a; chmod <permissions> <file or directory>其中 <…

【测试】笔试01

文章目录 1. 按照瀑布模型的阶段划分&#xff0c;软件测试可以分为单元测试&#xff0c;集成测试&#xff0c;系统测试。请问以下哪项测试不属于系统测试的内容&#xff08; &#xff09;2. 测试设计员的职责有哪些&#xff1f;3. 针对程序段&#xff1a;IF&#xff08;A||B||C…

xsschallenge靶场练习1-13关

文章目录 第一关第二关第三关第四关第五关第六关第七关第八关第九关第十关第十一关第十二关第十三关 第一关 观察页面 http://192.168.80.139/xsschallenge/level1.php?nametest尝试在name后面输入最近基本的xss语法 <script>alert(1)</script>第二关 查看页面源…

Java【手撕滑动窗口】LeetCode 3. “无重复字符的最长子串“, 图文详解思路分析 + 代码

文章目录 前言一、长度最小子数组1, 题目2, 思路分析3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5; JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 &#x1f4d7; Java数据结构: 顺序表, 链…

(二十)大数据实战——Flume数据采集的基本案例实战

前言 本节内容我们主要介绍几个Flume数据采集的基本案例&#xff0c;包括监控端口数据、实时监控单个追加文件、实时监控目录下多个新文件、实时监控目录下的多个追加文件等案例。完成flume数据监控的基本使用。 正文 监控端口数据 ①需求说明 - 使用 Flume 监听一个端口&am…

Unity碰撞检测

Unity碰撞检测 前言准备材料代码使用OnCollisionEnter()进行碰撞Collider状态代码 使用OnTriggerEnter()进行碰撞Collider状态代码 区别代码OnCollisionEnter()OnTriggerEnter() 碰撞显示效果OnCollisionEnter()OnTriggerEnter() 提示结语 前言 碰撞检测可以说时学习Unity中最…

时间复杂度和空间复杂度的最小单位是什么

C数据结构与算法 目录 时间复杂度&#xff1a;CPU读写一次内存算作时间复杂度的最小单位。 读内存的场景&#xff1a;获取变量的值。 例如&#xff1a; if(x < 1000) 写内存的场景&#xff1a;给变量赋值。 例如&#xff1a;x 1000 空间复杂度&#xff1a;内存占用一…

VueX 与Pinia 一篇搞懂

VueX 简介 Vue官方&#xff1a;状态管理工具 状态管理是什么 需要在多个组件中共享的状态、且是响应式的、一个变&#xff0c;全都改变。 例如一些全局要用的的状态信息&#xff1a;用户登录状态、用户名称、地理位置信息、购物车中商品、等等 这时候我们就需要这么一个工…

启莱OA treelist.aspx SQL注入

子曰&#xff1a;“为政以德&#xff0c;譬如北辰&#xff0c;居其所&#xff0c;而众星共之。” 漏洞复现 访问漏洞url&#xff1a; 使用SQLmap对参数 user 进行注入 漏洞证明&#xff1a; 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&#xff0c;万分感…

Java“牵手”1688淘口令转换API接口数据,1688API接口申请指南

1688平台商品淘口令接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取1688商品的标题、价格、库存、商品快递费用&#xff0c;宝贝ID&#xff0c;发货地&#xff0c;区域ID&#xff0c;快递费用&#xff0c;月销量、总销量、库存、详情描…

juicefs源码format命令阅读

之前博文中介绍过在windows下安装GO和vscode windows下安装go环境 和vscode中go扩展调试 1、获取源码 git clone https://github.com/juicedata/juicefs.git 首先观察代码架构 上图是我已经编译过得代码&#xff0c;可能和刚git下来的有些出入。 2、编译 我是在windows上进…

C++学习笔记总结练习:运算符重载两种方式

运算符重载的两种方式 1 基本概念 基础 运算符时具有特殊名字的函数&#xff1a;由关键字operator和气候定义的运算符共同组成。 可以被重载的运算符 方式 将运算符重载为类的成员函数。重载运算符函数&#xff0c;并声明为类的友元。 规则 重载后的运算符必须至少有一个…

可控硅调功电路原理

在常见的马达调速以及需要调整负载功率的场合&#xff0c;经常会用到可控硅调功电路&#xff0c;下图是常见的应用电路。 调功电路主要由阻容移相电路和可控硅触发电路构成&#xff0c;工作过程如下&#xff0c;当交流电的正半周时&#xff0c;交流电通过R5,可调电阻R3给电容C1…

Elasticsearch数据库操作

索引操作 新建索引 PUT /ztt {"mappings": {"properties": {"info":{"type": "text","analyzer": "ik_smart"},"email":{"type": "keyword","index": false…

简单聊聊Https的来龙去脉

简单聊聊Https的来龙去脉 Http 通信具有哪些风险Https Http SSL/TLS对称加密 和 非对称加密数字证书数字证书的申请数字证书怎么起作用 Https工作流程一定需要Https吗&#xff1f; Http 通信具有哪些风险 使用明文通信&#xff0c;通信内容可能会被监听不验证通信双方身份&a…

每天刷题五道RHCSA/6-10题(Radhat8.2)

6.创建协作目录权限 mkdir /home/managers chown :sysmgrs /home/managers chmod 2770 /home/managers 测试&#xff1a; touch /home/managers/12345 ll /home/managers/12345 7.配置NTP systemctl status chronyd #查看状态 yum -y install chrony #如果没有安装&#xff0c…

最佳实践:TiDB 业务读变慢分析处理

作者&#xff1a;李文杰 网易游戏计费 TiDB 负责人 在使用或运维管理 TiDB 的过程中&#xff0c;大家几乎都遇到过 SQL 变慢的问题&#xff0c;尤其是查询相关的读变慢问题。读变慢的问题大部分情况下都遵循一定的规律&#xff0c;通过经验的积累可以快速的定位和优化&#xff…

Java实现根据关键词搜索京东商品列表数据方法,当当API接口(jd.item_search)申请指南

要通过京东网的API获取商品列表数据&#xff0c;您可以使用京东开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过京东开放平台API获取商品列表&#xff1a; 首先&#xff0c;确保您已注册成为当当开放平台的开发者&#xff0c;并创建…

五金轴尺寸机器视觉测量软硬件方案--康耐德智能

检测内容&#xff1a; 五金轴尺寸机器视觉测量 检测要求&#xff1a; 精度0.015mm&#xff0c;速度180~240个/分钟 视觉可行性分析&#xff1a; 对样品进行了光学实验&#xff0c;并进行图像处理&#xff0c;原则上可以使用机器视觉系统进行测试测量。 结果&#xff1a; 对…