清明假期作业

1、实现文件夹的拷贝功能
注意判断被拷贝的文件夹是否存在,如果不存在则提前
不考虑递归拷贝的问题

#include<myhead.h>
int my_copy(char* name,const char *p)
{
	char buf[256]="./";
	strcat(buf,p);
	strcat(buf,"/");
	strcat(buf,name);
	int rfd=open(name,O_RDONLY);
	int wfd=open(buf,O_WRONLY|O_CREAT,0664);
	char arr[126];
	while(1)
	{
		int res=read(rfd,arr,sizeof(arr));
		if(res<0)
		{
			perror("read");
			return 1;
		}else if(res==0)
		{
			break;
		}
		write(wfd,arr,sizeof(arr));
		bzero(arr,sizeof(arr));
	}
	close(rfd);
	close(wfd);
}
int main(int argc, char *argv[])
{
	DIR* fd=opendir(argv[1]);
	if(fd==NULL)
	{
		perror("opendir");
		return 1;
	}
	mkdir(argv[2],0777);
	while(1)
	{
		struct dirent* rd=readdir(fd);
		if(rd==NULL&&errno==0)
		{
			break;
		}else if(rd==NULL&&errno!=0)
		{
			perror("readdir");
			return -1;
		}
		if(*(rd->d_name)=='.')
		{
			continue;
		}
		my_copy(rd->d_name,argv[2]);
	}
	closedir(fd);
      return 0;
}

效果图:

2、有如下结构体
struct studentf
char name[20];
int age;
double math score;
double chinese score;
double english score;
double physical score;
double chemical score;
double biological score;
申请一个该结构体数组,使用 fprintf /fscanf,将该结构体数组中的所有数据,写入文件中

#include<myhead.h>
struct Student{
	char name[20];
	int age;
	double math_score;
	double chinese_score;
	double english_score;
	double physical_score;
	double chemical_score;
	double biological_score;
};
int main(int argc, char *argv[])
{
	struct Student stu[5];
	int i=0;
	for(i=0;i<5;i++)
	{
		scanf("%s %d %lf %lf %lf %lf %lf %lf",stu[i].name,&stu[i].age,&stu[i].math_score,&stu[i].chinese_score,&stu[i].english_score,&stu[i].physical_score,&stu[i].chemical_score,&stu[i].biological_score);
		while(getchar()!=10);
	}
	for(i=0;i<5;i++)
	{
		printf("姓名:%s\n",stu[i].name);
		printf("年龄:%d\n",stu[i].age);
		printf("数学:%lf\n",stu[i].math_score);
		printf("语文:%lf\n",stu[i].chinese_score);
		printf("英语:%lf\n",stu[i].english_score);
		printf("物理:%lf\n",stu[i].physical_score);
		printf("化学:%lf\n",stu[i].chemical_score);
		printf("生物:%lf\n",stu[i].biological_score);
	}
	FILE* wfd=fopen("./write.txt","w");
	for(i=0;i<5;i++)
	{
		fprintf(wfd,"%s %d %lf %lf %lf %lf %lf %lf",stu[i].name,stu[i].age,stu[i].math_score,stu[i].chinese_score,stu[i].english_score,stu[i].physical_score,stu[i].chemical_score,stu[i].biological_score);
		
	}
	fclose(wfd);
	FILE* rfd=fopen("./write.txt","r");
	struct Student new[5];
	for(i=0;i<5;i++)
	{
		fscanf(rfd,"%s %d %lf %lf %lf %lf %lf %lf",new[i].name,&new[i].age,&new[i].math_score,&new[i].chinese_score,&new[i].english_score,&new[i].physical_score,&new[i].chemical_score,&new[i].biological_score);
	}
	for(i=0;i<5;i++)
	{
		printf("姓名:%s\n",new[i].name);
		printf("年龄:%d\n",new[i].age);
		printf("数学:%lf\n",new[i].math_score);
		printf("语文:%lf\n",new[i].chinese_score);
		printf("英语:%lf\n",new[i].english_score);
		printf("物理:%lf\n",new[i].physical_score);
		printf("化学:%lf\n",new[i].chemical_score);
		printf("生物:%lf\n",new[i].biological_score);
	}
	fclose(rfd);
	return 0;
}

创建一对父进程,在父进程能够向子进程发送消息的基础上发同时子进程也能够向父进程发送消息

#include<myhead.h>
char* f_write(char *buf)
{
	int wfd=open("./f_write.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
	write(wfd,buf,sizeof(buf));
	close(wfd);
	return buf;
}
char* f_read(char *buf)
{
	int rfd=open("./f_write.txt",O_RDONLY);
	read(rfd,buf,sizeof(buf));
	close(rfd);
	return buf;
}
char* z_write(char *buf)
{
	int wfd=open("./z_write.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
	write(wfd,buf,sizeof(buf));
	close(wfd);
	return buf;
}
char* z_read(char *buf)
{
	int rfd=open("./z_write.txt",O_RDONLY);
	read(rfd,buf,sizeof(buf));
	close(rfd);
	return buf;
}
int main(int argc, char *argv[])
{
	int res=fork();
	while(1)
	{
		if(res>0)
		{
			printf("请输入父进程信息\n");
			char wbuf[1024];
			scanf("%s",wbuf);
			f_write(wbuf);
			while(1)
			{
				struct stat rstat;
				stat("z_write.txt",&rstat);
				if(rstat.st_size>0)
				{
					break;
				}
			}
			char rbuf[1024]={0};
			z_read(rbuf);
			printf("子进程:%s\n",rbuf);
		}else if(res==0)
		{
			while(1)
			{
				struct stat rstat;
				stat("f_write.txt",&rstat);
				if(rstat.st_size>0)
				{
					break;
				}
			}
			char rbuf[1024]={0};
			f_read(rbuf);
			printf("父进程:%s\n",rbuf);
			printf("请输入回复\n");
			char wbuf[1024];
			scanf("%s",wbuf);
			z_write(wbuf);

			
		}else if(res==-1)
		{
			perror("fork");
			return 1;
		}
	}
      return 0;
}

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

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

相关文章

P1001 A+B Problem

1.题目背景 强烈推荐新用户必读帖。 不熟悉算法竞赛的选手请看这里&#xff1a; 算法竞赛中要求的输出格式中&#xff0c;**不能有多余的内容&#xff0c;这也包括了“请输入整数a和b” 这一类的提示用户输入信息的内容。**若包含了这些内容&#xff0c;将会被认为是Wrong Answ…

嵌入式Qt QGridLayout网格布局管理器

一.QGridLayout网格布局管理器 //以行为单位 设置比例系数 void QGridLayout::setRowStretch ( int row, int stretch ) //以列为单位 设置比例系数 void QGridLayout::setColumnStretch ( int column, int stretch ) 实验&#xff1a; Widget.h&#xff1a; #ifndef _WIDGE…

dm8数据迁移工具DTS

dm8数据迁移工具DTS DTS工具介绍 DM数据迁移工具提供了主流大型数据库迁移到DM、DM到DM、文件迁移到DM以及DM迁移到文件的功能。DM数据迁移工具采用向导方式引导用户通过简单的步骤完成需要的操作。 DM数据迁移工具支持&#xff1a; ◆ 主流大型数据库Oracle、SQLServer、MyS…

3.6 CSS定位

CSS定位可以将HTML元素放置在页面上指定的任意地方。CSS定位的原理是把页面左上角的点定义为坐标为(0,0)的原点&#xff0c;然后以像素为单位将整个网页构建成一个坐标系统。其中x轴与数学坐标系方向相同&#xff0c;越往右数字越大&#xff1b;y轴与数学坐标系方向相反&#x…

r3live使用realsense避免相机内参标定

话题 /camera/color/camera_info 消息格式 sensor_msgs/CameraInfo distortion_model&#xff1a;指定了相机畸变模型&#xff0c;"plumb_bob"简单的径向和切向畸变模型 D&#xff1a;畸变参数&#xff0c;取决于畸变模型&#xff0c;(k1, k2, t1, t2, k3)&#xf…

Shell编程初识

Shell初识 ShellShell 脚本Shell 环境第一个shell脚本实例 运行 Shell 脚本方法&#xff1a;1、作为可执行程序2、作为解释器参数3.使用 . (空格)脚本名称来执行4.使用 source 来执行(主要用于生效配置文件)区别1.关于执行权限2.关于是否开启子shell线程 脚本排错及问题判断she…

dm8 备份与恢复

dm8 备份与恢复 基础环境 操作系统&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;DM Database Server 64 V8 架构&#xff1a;单实例1 设置bak_path路径 --创建备份文件存放目录 su - dmdba mkdir -p /dm8/backup--修改dm.ini 文件…

Linux学习之路 -- 进程篇 -- PCB介绍2 -- 标识符和进程创建

前面我们介绍了的进程的标识符&#xff0c;下面继续介绍进程标识符和进程创建的知识。 目录 一、进程创建 <1>fork函数的返回值 <2>创建子进程的目的 <3>代码共享 二、fork函数的相关问题 <1>为什么给父进程返回子进程的pid&#xff0c;给子进程…

数据生成 | Matlab实现基于DE差分进化算法的数据生成

数据生成 | Matlab实现基于DE差分进化算法的数据生成 目录 数据生成 | Matlab实现基于DE差分进化算法的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于DE差分进化算法的数据生成&#xff0c;运行环境Matlab2021b及以上&#xff1b; 2.计…

代码随想录算法训练营Day46|LC139 单词拆分

一句话总结&#xff1a;完全背包&#xff01; 原题链接&#xff1a;139 单词拆分 动态规划之完全背包五部曲&#xff1a; 确定dp数组与下标含义&#xff1a;表示字符串长度为i时&#xff0c;dp[i] true 的话&#xff0c;可以拆分为一个或多个在字典中出现的单词。确定递归公…

C++相关概念和易错语法(4)(构造函数、析构函数)

一、构造函数 1.实现的功能&#xff1a;实例化对象的时候默认自动调用&#xff0c;相当于初始化。 条件&#xff1a;在书写时要满足构造函数的规范&#xff08;函数名 类名&#xff0c;不写返回值&#xff0c;也没有返回值&#xff09;&#xff0c;可以用inline来修饰。 2.自…

Microsoft Edge浏览器设置之后就很牛逼了

1.移除多余的广告 首先我们要先下载Microsoft Edge浏览器浏览器 然后在设置中先打开扩展,安装一个神奇的去广告插件 打开Edge 加载项 直接搜adguard 广告拦截器,直接获取就可以安装了,由于我已经安装过了,所以就是显示的删除。 2.解除网页复制限制 直接在扩展中安装sim…

Toyota Programming Contest 2024#4(AtCoder Beginner Contest 348)(A~D)

A - Penalty Kick i,1~N。如果 i 是 3 的倍数输出x&#xff0c;否则输出o #include <bits/stdc.h> //#define int long long #define per(i,j,k) for(int (i)(j);(i)<(k);(i)) #define rep(i,j,k) for(int (i)(j);(i)>(k);--(i)) #define debug(a) cout<<#…

HTTP详解及代码实现

HTTP详解及代码实现 HTTP超文本传输协议 URL简述状态码常见的状态码 请求方法请求报文响应报文HTTP常见的HeaderHTTP服务器代码 HTTP HTTP的也称为超文本传输协议。解释HTTP我们可以将其分为三个部分来解释&#xff1a;超文本&#xff0c;传输&#xff0c;协议。 超文本 加粗样…

开源 _ 新一代Android 性能监控框架Rabbit

最终扫描结果会展示如下: 点击右上角导出按钮可以把扫描结果以json的形式导出到SD卡中。 网络日志监控 rabbit可以记录网络请求日志并方便的查看返回的json数据: 卡顿日志监控 rabbit通过Choreographer来检测主线程的运行情况,并异步采集主线程堆栈来还原卡顿现场。 对于下…

总包不足80w的高龄Android程序员,被面试官diss混得太差,网友狂吐槽……

有网友直言&#xff1a;90%的人一辈子一年也拿不到80万 有网友分析到&#xff1a;看面试情况&#xff0c;没什么希望就直接其实我觉得30岁年薪低于1000万的都是loser&#xff0c;你我都是 有网友说&#xff1a;这几年互联网行业极大发展&#xff0c;让互联网行业成为了明星行…

2_6.Linux高级存储管理

##1.逻辑卷## pv ##物理卷 被处理过的物理分区 pe ##物理扩展 设定存储最小单元 vg ##物理卷组 捆绑pv到一个组中 lv ##逻辑卷 分配最终的使用设备 监控建立过程&#xff1a; watch -n 1 "pvs;echo ;vgs;echo ;lvs;echo ;df -h /weixindata" &#xff08;1&#xf…

合理早餐选择,稳定糖尿病血糖。

对于糖尿病患者来说&#xff0c;饮食管理是治疗的重要一环。不合理的早餐选择会导致血糖的波动。很多糖尿病朋友按时吃药&#xff0c;但是血糖就是稳定不住&#xff0c;之前看过一个例子&#xff0c;北京崇文门医院朱学敏主任接诊过一个患者&#xff0c;那个患者按时吃药&#…

C++设计模式:装饰器模式(四)

1、定义与动机 装饰器模式定义&#xff1a;动态&#xff08;组合&#xff09;地给一个对象增加一些额外的职责。就增加功能而言&#xff0c;Decorator模式比生成子类&#xff08;继承&#xff09;更为灵活&#xff08;消除重复代码 & 减少子类个数&#xff09;。 在某些情…

ARM体系结构

阅读引言&#xff1a; arm架构处理器的基本知识已在上一篇文章中描述过了&#xff0c; 本文将会从arm的存储模型、异常机制、工作模式、指令集、流水线、arm的寄存器组织方面去描述。 目录 一、ARM处理器概论 1.指令集概述 2.指令分类 3.编译流程 二、ARM的存储模型 1.AR…