C //例10.2 将一个磁盘文件中的信息复制到另一个磁盘文件中。

C程序设计 (第四版) 谭浩强 例10.2

例10.2 将一个磁盘文件中的信息复制到另一个磁盘文件中。

IDE工具:VS2010
Note: 使用不同的IDE工具可能有部分差异。

 

代码块
方法:使用指针,函数的模块化设计,动态分配内存
说明:这里准备先写入的文件名称为Test.txt,准备复制到Test1.txt文件中,文件都已经存在于该项目目录下,。
#include <stdio.h>
#include <stdlib.h>

void initialFile(char **name1, char **name2){
	*name1 = (char*)malloc(80 * sizeof(char));
	*name2 = (char*)malloc(80 * sizeof(char));
}

void inputFileName(FILE **file, char *name, int num){
	printf("Enter File%d Name: ", num);
	scanf("%s", name);

	char *sign = '\0';
	if(num == 1){
		sign = "r";
	}
	if(num == 2){
		sign = "w+";
	}

	*file = fopen(name, sign);
	if(*file == NULL){
		perror("Cannot open this file");
		system("pause");
		exit(0);
	}
}

void inputFile(FILE **file, char *name){
	char ch;
	*file = fopen(name, "w");
	
	ch = getchar();
	printf("Enter String (End with EOF): ");
	while((ch = getchar()) != EOF){
		fputc(ch, *file);
		putchar(ch);
	}
	printf("\n");
	fclose(*file);
}

void fileCopy(FILE **file1, FILE **file2, char *name1, char *name2){
	*file1 = fopen(name1, "r");

	char ch;
	ch = getchar();
	while(!feof(*file1)){
		ch = fgetc(*file1);
		fputc(ch, *file2);
		putchar(ch);
	}

	fclose(*file1);
	fclose(*file2);
	putchar(10);
}

void freeFile(char **name1, char **name2){
	free(*name1);
	free(*name2);
}

int main(){
	FILE *file1 = NULL;
	FILE *file2 = NULL;
	char *name1 = NULL;
	char *name2 = NULL;

	initialFile(&name1, &name2);
	inputFileName(&file1, name1, 1);
	inputFile(&file1, name1);
	inputFileName(&file2, name2, 2);
	fileCopy(&file1, &file2, name1, name2);
	freeFile(&name1, &name2);

	system("pause");
	return 0;
}
运行结果如下:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基础课18——表格问答引擎

1.定义 表格问答引擎是一种针对结构化二维表的知识问答引擎&#xff0c;它可以基于表格内容快速抽取信息&#xff0c;并回答用户提出的问题。表格问答引擎的核心技术包括自然语言处理和机器学习等&#xff0c;它通过对表格数据的处理和分析&#xff0c;能够实现自动化问答的目…

外包干了3年,技术退步太明显了。。。

简单的说下&#xff0c;我大学的一个同学&#xff0c;毕业后我自己去了自研的公司&#xff0c;他去了外包&#xff0c;快3年了我薪资、技术各个方面都有了很大的提升&#xff0c;他在外包干的这3年人都要废了&#xff0c;技术没一点提升&#xff0c;学不到任何东西&#xff0c;…

软件工程之架构设计

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、架构设计的目的 1.什么是复杂的软件项目 复杂的软件项目通常有两个特点&#xff1a; 需求不确定 技术复杂 技术的复杂性主要体现在四个方面…

【每日一题】最小化旅行的价格总和

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;深搜动态规划 写在最后 Tag 【深搜动态规划】【树】【2023-12-06】 题目来源 2646. 最小化旅行的价格总和 题目解读 有一棵无向、无根的树&#xff0c;树中的节点从 0 到 n-1&#xff0c;每个节点有一个关联的价格&a…

【AntDB 数据库】国产数据库肇始之独具特色的场景需求

影响国产数据库源起、发展的因素有很多&#xff0c;除了数据库本身对国家和组织的重要战略性地位、市场趋势向好等因素外&#xff0c;还有哪些关键因素呢&#xff1f;今天AntDB数据库就跟大家一起回顾、探求一下我国最早一批国产数据库起源背后独具特色的场景需求。 过去40年&…

C++红黑树封装set和map(很详细)

前言 在前面&#xff0c;我们学习了红黑树。&#xff08;没学过红黑树直接看会很吃力&#xff09;set和map的底层就是红黑树&#xff0c;现在我们要用这棵树来封装STL里面的容器&#xff1a;set和map。 下面是之前讲过的红黑树&#xff0c;他只是普通的“Key”模型,适合封装set…

技术博客:Vue中各种混淆用法汇总

技术博客&#xff1a;Vue中各种混淆用法汇总 摘要 本文主要介绍了在Vue中使用的一些常见混淆用法&#xff0c;包括new Vue()、export default {}、createApp()、Vue.component、Vue3注册全局组件、Vue.use()等&#xff0c;以及如何使用混淆器对代码进行加固&#xff0c;保护应…

Opencv库如何检测图片中鸡蛋数量

Opencv库检测图片中鸡蛋数量 由于需要写一个检测鸡蛋数量的程序&#xff0c;用了几个opencv中的经典方法&#xff0c;实现了图片中鸡蛋的检测。在一步步实现的同时&#xff0c;同时说明每个方法的用途。希望能给学习opencv的小伙伴一些帮助。下图为原始图和实现后的检测边框。…

csdn-添加目录

只需一句&#xff0c;根据文章标题层级自动生成目录 在文章内添加下面这句会自动生成目录 [TOC](此处填写目录的标题)

【CMake入门】第一节——CMake的安装与简单样例

CMake——Cross platform Make CMake是一个开源的跨平台自动化建构系统&#xff0c;用来管理程序构建&#xff0c;不相依于特定编译器&#xff0c;不用亲自编写Makefile。需要编写CMakeList.txt文件来定制整个编译流程可以自动化编译源代码、创建库、生成可执行二进制文件等 …

msvcr110.dll丢失的解决方法有哪些-常见方法教程

我们在日常使用电脑中经常遇到各种问题&#xff0c;比如系统文件丢失是最常见的&#xff0c;其中msvcr110.dll丢失也是非常常见的问题&#xff0c;那么msvcr110.dll文件为什么会丢失&#xff0c;丢失对电脑有什么影响呢&#xff0c;丢失了有什么解决方法&#xff1f;今天小编就…

【MySQL】聚合函数和分组(查找)

聚合函数分组分组聚合如何显示每个部门的平均工资和最高工资显示每个部门的每种岗位的平均工资和最低工资显示平均工资低于2000的部门和它的平均工资(SMITH员工不参与)where 和 having 的区别 聚合函数 函数说明COUNT([DISTINCT] expr)返回查询到的数据的 数量SUM([DISTINCT] …

深度学习助力手写识别OCR软件的发展与应用

随着人工智能和深度学习技术的不断发展&#xff0c;手写识别OCR软件的技术也在不断进步。目前&#xff0c;市场上已经有一些基于深度学习的手写识别OCR软件&#xff0c;可以对手写文字进行自动识别和转换。 首先&#xff0c;我们来介绍一下基于深度学习的手写识别OCR软件的基本…

C语言能判断一个变量是int还是float吗?

C语言能判断一个变量是int还是float吗&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「C语言从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&…

Qnx boot workflow

S820A QNX Hypervisor Software User Guide 80-CF838-1 Rev. Img 生成脚本: target/hypervisor/host/create_images.sh tools/build/image-builder.sh The QVM config file for the guest is instantiated within the host rootfs build file, located at root/target/hyp…

python和php语言编写大型爬虫那个更适用 ?

以我多年从事爬虫行业的经验来说&#xff0c;其实python和php两种语言都可以用于编写大型爬虫项目&#xff0c;但是因为Python语言简洁方便&#xff0c;第三方库相比有很多&#xff0c;数据处理能力也很强&#xff0c;所以受到大多数程序员的追捧。 Python和PHP都可以用于编写…

多平台展示预约的服装小程序效果如何

线下实体服装店非常多&#xff0c;主要以同城生意为主&#xff0c;但随着电商经济增长&#xff0c;传统线下自然流量变少&#xff0c;商家们会选择线上入驻平台开店获得更多线上用户&#xff0c;包括自建私域小程序等。 而除了直接卖货外&#xff0c;线上展示预约在服装行业也…

人工智能-机器翻译:技术发展与代码实战

在本文中&#xff0c;我们深入探讨了机器翻译的历史、核心技术、特别是神经机器翻译&#xff08;NMT&#xff09;的发展&#xff0c;分析了模型的优化、挑战及其在不同领域的应用案例。同时&#xff0c;我们还提出了对未来机器翻译技术发展的展望和潜在的社会影响。 关注TechLe…

class049 滑动窗口技巧与相关题目【算法】

class049 滑动窗口技巧与相关题目【算法】 算法讲解049【必备】滑动窗口技巧与相关题目 code1 209. 长度最小的子数组 // 累加和大于等于target的最短子数组长度 // 给定一个含有 n 个正整数的数组和一个正整数 target // 找到累加和 > target 的长度最小的子数组并返回…

docker配置阿里云镜像加速器

docker配置阿里云镜像加速器 1.注册一个阿里云账户 https://cr.console.aliyun.com/ 2.获取加速器地址链接 可直接复制&#xff0c;位置如下: 3.配置脚本 这个位置可以直接复制脚本&#xff0c;大家操作的时候直接复制自己的就好 sudo mkdir -p /etc/docker sudo tee /et…