c语言,拷贝文件,分5个文件进行存储、盗墓者是个丑奴儿

2024-01-12 03:59

本文主要是介绍c语言,拷贝文件,分5个文件进行存储、盗墓者是个丑奴儿,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//盗墓者是个丑奴儿,原

//博主个人网站 :https://daomu.kaige123.com

//打完一波小广告,进入正题

 

//头文件引入

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <ctype.h>
#include <unistd.h>
#include <sys/stat.h>
#include <fcntl.h>

 

//解决思路:先读取了总内容,存储入数组,在通过下标控制每一份写入每个文件之中。

//这里更好的做法是使用偏移量lseek,去读取不同地的字节。想要简便,就使用了简单的做法

 

//变量,做a1.txt,a2.txt,a3.txt,数字自增变量

int ind=1;

 

//save_file()函数作用:将读取内容分n份存储

//参数:number,要分为的份数,size文件总大小,info文件内容

//这里分5分存储,总大小size/份数number等于前4份分出要存储的字节,最后一份第5份需要额外处理。并不能保证字节刚好分5份存储

void save_file(int number,int size,char * info){
                char ar[8]={'.','/','a','n','.','t','x','t'};

                int sizer=size/number;
                char arr[sizer];
                for(int i=0;i<number;i++){
                        memset(arr,'0',sizeof(arr));
                        arr[sizeof(arr)]='\0';
                        if(i==number-1){
                                memcpy(arr,&info[i*sizer],size-(sizer*i));
                        }else{
                                memcpy(arr,&info[i*sizer],sizer);
                        }
                        ar[3]=(ind++)+48;
                        int ffd=open(ar,O_RDWR | O_CREAT | O_EXCL,0666);
                        write(ffd,arr,strlen(arr));
                        close(ffd);
                }

}

 

//main测试,open打开文件,read读取所有字节内容,传递给save_file,分份数存储

int main(void){

        int fd=open("./stu.java",O_RDWR);
        char arr[100]={0};
        read(fd,arr,sizeof(arr));

        int off=lseek(fd,0,SEEK_END);

        save_file(5,off,arr);

        close(fd);

        return 0;

}
 

运行结果:ls查看目录,运行后多出5个文件,将stu.java分5份存储

这篇关于c语言,拷贝文件,分5个文件进行存储、盗墓者是个丑奴儿的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/596735

相关文章

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Go语言中make和new的区别及说明

《Go语言中make和new的区别及说明》:本文主要介绍Go语言中make和new的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 概述2 new 函数2.1 功能2.2 语法2.3 初始化案例3 make 函数3.1 功能3.2 语法3.3 初始化

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

Go语言中nil判断的注意事项(最新推荐)

《Go语言中nil判断的注意事项(最新推荐)》本文给大家介绍Go语言中nil判断的注意事项,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.接口变量的特殊行为2.nil的合法类型3.nil值的实用行为4.自定义类型与nil5.反射判断nil6.函数返回的

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示