精华内容
下载资源
问答
  • c语言之分割与合并文件

    千次阅读 2017-05-20 22:39:34
    本文主要内容是分割一个与合并几个文件,使用c语言实现 #define _CRT_SECURE_NO_WARNINGS #include #include #include /*文件分割,path为要分割的文件路径name为文件名,count为分割数量,savepath为保存路径,...
    一.本文主要内容是分割一个与合并几个文件,使用c语言实现
    
    
    #define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    /*文件分割,path为要分割的文件路径name为文件名,count为分割数量,savepath为保存路径,返回-1表示分割失败,0表示成功*/
    int splitFile(char *path, int count, char *savepath, char *savename)
    {
    	FILE *F = fopen(path,"rb");
    	if (F == NULL)
    	{
    		return  -1;
    	}
    	else
    	{
    		fseek(F, 0, SEEK_END);//将文件指针移动到文件末尾
    		int length = ftell(F);//计算文件指针到文件开头的字节数,即就是文件大小
    		int yushu = length % count;//余数
    		int size = length / count; //前面count-1份每一分大小为size,最后一份为size + yushu
    		for (int i = 1; i <= count; i++)
    		{
    			char savefile[100];
    			sprintf(savefile, "%s%d%s", savepath, i, savename);
    			printf("%s", savefile);
    			FILE *P = fopen(savefile, "wb");
    			if (P == NULL)
    			{
    				fclose(F);
    				return -1;
    			}
    			else
    			{
    				fseek(F, (i - 1)*size, SEEK_SET);
    				if (i == count)
    				{
    					for (int j = 0; j <= size + yushu; j++)
    					{
    						int c = fgetc(F);
    						fputc(c, P);
    					}
    				}
    				else
    				{
    					for (int j = 0; j < size; j++)
    					{
    						int c = fgetc(F);
    						fputc(c, P);
    					}
    				}
    
    
    			}
    			fclose(P);
    		}
    		fclose(F);
    		return 0;
    	}
    
    }
    /*合并文件,将文件list中每一行指定的文件按行顺序合并为一个大文件bigfile返回-1表示分割失败,0表示成功*/
    int mergeFile(char *list,int count,char *bigfile)
    {
    	FILE *F = fopen(list, "r");
    	FILE *BF = fopen(bigfile, "wb");
    	if (F == NULL || BF == NULL)
    	{
    		printf("打开文件失败");
    		return -1;
    	}
    	else
    	{
    		
    		for (int i = 0; i < count; i++)
    		{
    			char str[200];
    			fgets(str, 200, F);//每次读取一行字符串,读到末尾为0
    			printf("%s", str);
    			int len = strlen(str);
    			str[len - 1] = '\0';
    			printf("%s", str);
    			FILE *P = fopen(str, "rb");
    			if (P == NULL)
    			{
    				printf("打开文件失败");
    				fclose(F);
    				fclose(BF);
    				return -1;
    			}
    			else
    			{
    				int c = fgetc(P);
    				while (c != EOF)
    				{
    					
    					fputc(c, BF);
    					c = fgetc(P);
    				}
    			}
    			fclose(P);
    
    
    		}
    
    
    
    	}
    	fclose(F);
    	fclose(BF);
    	return 0;
    }
    
    void main()
    {
    	//int i = splitFile("F:\\文件分割与合并.mp4", 4, "F:\\", "文件分割与合并.mp4");
    	//printf("%d", i);
    	mergeFile("F:\\list.txt",4, "F:\\he.mp4");
    	system("pause");
    }

    2.效果截图


    3.list文件内容


    展开全文
  • 【功能】 批量对文本文件进行编码转换(对网络下载的文本特别有效,目前仅支持转为GB2312); 批量对文件进行更名操作... 文件分割能按章节将文件分割成个小章节文件,支持章节分割,即每个分割文件中的章节数。
  • 说点正事吧,众所周知FFMPEG是个神奇的库,它能对媒体文件进行转码/分割/调速/序列合并分割甚至是抠像等操作. 先搞一段代码观摩一下 @echo off title 斯幽柏雷科技 - 视频切割工具[4x1] (%~1) if "%~1"=="" (echo ...

    前言

    最近有个项目,因为预算有限所以我们开发了一套软件视频矩阵系统去实现硬件视频矩阵的功能…
    结果验收的时候客户说不会切片子…无奈搞了一套视频切割工具…(服了!)

    观摩一下

    说点正事吧,众所周知FFMPEG是个神奇的库,它能对媒体文件进行转码/分割/调速/序列合并分割甚至是抠像等操作.


    先搞一段代码观摩一下

    @echo off
    title 斯幽柏雷科技 - 视频切割工具[4x1] (%~1)
    if "%~1"=="" (echo 无法定位原视频文件!,请将视频文件拖拽到快捷方式上重试! &pause&exit)
    set OutPath=%~sdp1[4x1]%~n1&&set OutName=%~n1
    md "%OutPath%" 1>nul 2>nul
    "%~dp0\ffmpeg.exe" -y -i "%~1" ^
    -vf crop=iw/4:ih:0:0 -threads 5 -preset ultrafast -strict -2 "%OutPath%\[4x1].mp4" ^
    -vf crop=iw/4:ih:1*iw/4:0 -threads 5 -preset ultrafast -strict -2 "%OutPath%\[4x2].mp4" ^
    -vf crop=iw/4:ih:2*iw/4:0 -threads 5 -preset ultrafast -strict -2 "%OutPath%\[4x3].mp4" ^
    -vf crop=iw/4:ih:3*iw/4:0 -threads 5 -preset ultrafast -strict -2 "%OutPath%\[4x4].mp4" ^
    
    

    上面是将视频画面一分为四的操作,可以拿来直接用.

    如何使用

    • 首先你需要FFMpeg.exe一个,没有的话戳下面链接下载;
    • 将上面的代码复制下来,在FFMpeg同级目录下新建文本文档;
    • 将新建的文本文档改名为SplitVideo(4x1).bat;
    • 如果你无法更改文件后缀请戳这里查看修改方式.
    • 保存文件(注意编码格式为ANSI,UTF8的话会出现中文等字符乱码!);
    • 将视频文件拖拽到这个bat上;
    • 等待处理完成后,原视频目录下会创建一个文件夹,切割后的视频都在里面了;

    FFmpeg视频裁切工具.zip
    压缩包里提供了相关批处理,开箱即用,猛戳下载!

    参数解释

    为了辅助下一个大神的诞生,接下来我将详细的为你解释上面各种参数都干啥用的.以便你可以自由的修改它为自己想要的方式…


    ffmpeg裁切参数解释

    代码:
    ffmpeg -vf crop=iw/4:ih:0:0 -threads 5 -preset ultrafast -strict -2 "OutPath.mp4"
    
    "-vf crop解释"
    添加一个crop滤镜(裁切滤镜),ffmpeg库包含了上百种滤镜!有兴趣可以去查一下.
    
    "crop=iw/4:ih:2*iw/4:0解释"
    上面代码定义出了要裁切的起始坐标及宽度高度信息
    看上去很难理解,其实很简单。
    它的格式crop=width:height:left:top
    
    帮你用代码捋一下逻辑:
    left=2*iw/4 //获取视频四等份的第二等份起始位置
    top=0
    width=iw/4 //获取原视频的宽度÷4。
    height=ih
    
    "iw"是inputWidth的缩写,它可以获取原视频的像素宽度.
    "ih"是inputHeight的缩写,同理是获取原视频的高度.
    
    
    "-threads 5 解释"
    多线程等级 这个我也没搞懂什么逻辑 一般不占太多性能给2,猛一点个给5
    具体参考https://www.cnblogs.com/yuanloo/p/4366194.html
    
    "-preset ultrafast 解释"
    转码质量,指定编码速度,速度越慢,画质越好,cpu占用越高,可取值:
    ultrafast,superfast,veryfast,faster,fast,medium,slow,slower,veryslow,placebo
    具体参考:https://blog.csdn.net/u010168781/article/details/107497953
    "-strict -2 解释"
    使用aac音频编码
    具体参考:https://blog.csdn.net/jeffasd/article/details/71194263
    

    如果你好奇%~dp0这类的参数,请继续往下看:

    代码:
    if "%~1"==""
    ---------------------------------------------------------------
    判断有没有拖放进来文件用的,这里%~1的情况就是获取拖拽到bat上的视频文件.
    
    "%~1解释"
    我们知道命令行是类似以"cmd /c echo 123"这样的方式执行的.
    在"%~1"中,数字1为命令行以空格分割的第几个参数,也就是/c.
    如果为"%~0"则是获取当前程序名cmd.以此类推.
    ---------------------------------------------------------------
    代码:
    set OutPath=%~sdp1[4x1]%~n1&&set OutName=%~n1
    "set解释"
    这个指令就不用多说了,设置变量用的.调用的时候需要在变量名两侧包裹上%号,
        例如echo %OutPath%
    
    "%~sdp1解释"
    这个稍微复杂,它是三个指令的集合,其中s/d/p三个字母代表不同的涵义.
    	%~s1:取文件全路径缩写
    	%~d1:取驱动器盘符
    	%~p1:取文件路径
    	将他们三个组合起来就是获取视频文件所在路径
    	当然还有其他的指令,详情看下这篇帖子:
    	https://blog.csdn.net/weixin_30292745/article/details/95183527
    
    "%~n1解释"
    这个是获取文件名(不带路径和后缀),%~nx1是获取带后缀的文件名.
    
    ---------------------------------------------------------------
    代码:
    "%~dp0\ffmpeg.exe" -y -i "%~1" ^
    
    "%~dp0解释"
    获取当前批处理文件所在的目录.
    注意上面包含了双引号,它可以将路径中包含空格的文本视为一整个参数.
    
    " ^ 解释"
    批处理中的关键字符转义操作,一些关键字符例如| % >是无法直接echo出来的,
    但是你将它前面加一个^则代表转义下一个字符为字符本身,无特殊功能.
    例如想要输出%的话,直接 echo % 你会发现报错,你需要写成 echo ^%
    在上面代码情况下,将^符号加到行尾则代表要注释换行符,
    这样就实现了一行代码太长写不下,转行继续写的操作.
    
    

    下面给了个截图帮助理解参数含义

    使用Notepad++编写

    最后

    原创不易,点点关注。大吉大利,今晚不吃鸡!

    展开全文
  • git分之强制合并 git checkout branch -- 文件名/文件夹名

    git分之强制合并文件到另外一个分之

    git checkout 分之名 -- 文件名/文件夹名
    
    展开全文
  • c语言文件分割与合并

    2021-03-10 19:42:25
    @1分割与合并文件最好使用二进制模式即"rb"或"wb",这样可以操作任何类型文件 @2FILE 指针一定要进行判空操作即看F == NULL成立不 @3文件用完必须关闭,释放系统资源,因为文件会分配缓冲区,占据内存 1.包含头文件 ...

    一.综述

    c语言操作文件通过文件指针FILE*,每个要操作的文件必须打开然后才能读写。

    注意事项:

    @1分割与合并文件最好使用二进制模式即"rb"或"wb",这样可以操作任何类型文件

    @2FILE 指针一定要进行判空操作即看F == NULL成立不

    @3文件用完必须关闭,释放系统资源,因为文件会分配缓冲区,占据内存

    1.包含头文件

    _CRT_SECURE_NO_WARNINGS表示关闭安全检查
    
    1 #define _CRT_SECURE_NO_WARNINGS
    2 #include<stdio.h>
    3 #include<stdlib.h>
    4 #include<string.h>
    

    2.编写分割函数

     1 /*文件分割,path为要分割的文件路径name为文件名,count为分割数量,savepath为保存路径,返回-1表示分割失败,0表示成功*/
     2 int splitFile(char *path, int count, char *savepath, char *savename)
     3 {
     4     FILE *F = fopen(path,"rb");
     5     if (F == NULL)
     6     {
     7         return  -1;
     8     }
     9     else
    10     {
    11         fseek(F, 0, SEEK_END);//将文件指针移动到文件末尾
    12         int length = ftell(F);//计算文件指针到文件开头的字节数,即就是文件大小
    13         int yushu = length % count;//余数
    14         int size = length / count; //前面count-1份每一分大小为size,最后一份为size + yushu
    15         for (int i = 1; i <= count; i++)
    16         {
    17             char savefile[100];
    18             sprintf(savefile, "%s%d%s", savepath, i, savename);
    19             printf("%s", savefile);
    20             FILE *P = fopen(savefile, "wb");
    21             if (P == NULL)
    22             {
    23                 fclose(F);
    24                 return -1;
    25             }
    26             else
    27             {
    28                 fseek(F, (i - 1)*size, SEEK_SET);
    29                 if (i == count)
    30                 {
    31                     for (int j = 0; j <= size + yushu; j++)
    32                     {
    33                         int c = fgetc(F);
    34                         fputc(c, P);
    35                     }
    36                 }
    37                 else
    38                 {
    39                     for (int j = 0; j < size; j++)
    40                     {
    41                         int c = fgetc(F);
    42                         fputc(c, P);
    43                     }
    44                 }
    45 
    46 
    47             }
    48             fclose(P);
    49         }
    50         fclose(F);
    51         return 0;
    52     }
    

    3.编写合并函数

     1 /*合并文件,将文件list中每一行指定的文件按行顺序合并为一个大文件bigfile返回-1表示分割失败,0表示成功*/
     2 int mergeFile(char *list,int count,char *bigfile)
     3 {
     4     FILE *F = fopen(list, "r");
     5     FILE *BF = fopen(bigfile, "wb");
     6     if (F == NULL || BF == NULL)
     7     {
     8         printf("打开文件失败");
     9         return -1;
    10     }
    11     else
    12     {
    13         
    14         for (int i = 0; i < count; i++)
    15         {
    16             char str[200];
    17             fgets(str, 200, F);//每次读取一行字符串,读到末尾为0
    18             printf("%s", str);
    19             int len = strlen(str);
    20             str[len - 1] = '\0';
    21             printf("%s", str);
    22             FILE *P = fopen(str, "rb");
    23             if (P == NULL)
    24             {
    25                 printf("打开文件失败");
    26                 fclose(F);
    27                 fclose(BF);
    28                 return -1;
    29             }
    30             else
    31             {
    32                 int c = fgetc(P);
    33                 while (c != EOF)
    34                 {
    35                     
    36                     fputc(c, BF);
    37                     c = fgetc(P);
    38                 }
    39             }
    40             fclose(P);
    41 
    42 
    43         }
    44 
    45 
    46 
    47     }
    48     fclose(F);
    49     fclose(BF);
    50     return 0;
    51 }
    

    4.主函数测试编写的函数

    1 void main()
    2 {
    3     int i = splitFile("F:\\文件分割与合并.mp4", 4, "F:\\", "文件分割与合并.mp4");
    4     printf("%d", i);
    5     mergeFile("F:\\list.txt",4, "F:\\he.mp4");
    6     system("pause");
    7 }
    

    5.测试结果截图

    分割结果:产生四个mp4文件,从1文件分割与合并.mp4到4文件分割与合并.mp4

    合并结果:

    list文件内容:

    展开全文
  • C语言分割合并文件

    2020-07-15 17:42:47
    #include #include #include int splitFile(char *, int, char *, char *);... } 将以上代码粘贴新建文件test.c中保存 编译命令 gcc -Wall -o test test.c 生成test.exe文件 执行test.exe分割和合并文件
  • java动态生成pdf含表格table和 合并两个pdf文件功能。 如果对您有帮助 ,请多多支持.多少都是您的心意与支持,一分也是爱,再次感谢!!!打开支付宝首页搜“556723462”领红包,领大红包的小伙伴赶紧使用哦! ...
  • Git合并代码.docx

    2020-08-20 19:39:42
    描述了合并某一次提交的代码的方式,描述了合并某一系统提交的方式,并且描述了合并某一个文件和拷贝某一分文件的方法
  • 举例如下,我们需要将hotfix/修复分支共通bug 分支中的 测试修改这个commit合并到feature/数据初始化重构 分支 操作如下 双击feature/数据初始化重构 切换这个需要合并的分支 将右边的当前分支改成 所有...
  • 在Excel工作簿中,同时选择个相邻的工作表,可以在按住( )键的同时依次单击各个工作表的标签。C A、Tab B、Alt C、Shift D、Ctrl 14. 在Excel 97中,修改当前工作表"标签"名称,下列( )不能实现。D A、双击工作...
  • 合并PDF-crx插件

    2021-03-22 20:53:32
    快速免费合并PDF文件! 幾分鐘內合併PDF文件! 快速簡便的合併PDF文件的方法。 選擇要合併的PDF文件後,只需選擇是否將合併的PDF文件保存計算機/ Google雲端硬盤。 合併PDF文件需要一分鐘,並且合併的PDF文件會在...
  •  在Excel工作簿中,同时选择个相邻的工作表,可以在按住( )键的同时依次单击各个工作表的标签。C A、Tab B、Alt C、Shift D、Ctrl 14. 在Excel 97中,修改当前工作表"标签"名称,下列( )不能实现。D A、...
  • * 文件名称: 补做友元函数 * 作 者: 汪荣建 * 完成日期: 2017年 5月 8 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: * 输入描述:  * 问题描述: * 程序输出:  * 问题分析: * ...
  • 假设Git目前只有一个分支master,开发人员的工作流程是 git clone master branch ... 通过git rebase -i 将本地的次提交合并为一个,以简化提交历史。本地有个提交时,如果不进行这一步,在git rebase mast
  • //当前正在上传的文件在数组中的下标,一次上传文件时使用    var filesArr= new Array(); //文件数组:每当有文件被添加进队列的时候 就push数组中    var map={}; //key存储文件id,value存储该...
  • 如果项目比较大,有多人协同开发,可能会遇到一个情况:很多人都把代码Commit提交dev分支,但是只有其中1、2个Commit需要合并到test分支;不能把所有的dev全部合并到test,该怎么如何操作呢? 我今天用...
  • svn 分支与合并

    2009-01-29 09:49:05
    合并分支一分支 为了完成这个例子,我们将时间往前推进,假定已经过了几天,在主干和你的分支上都有许多更改,假定你完成了分支上的工作,已经完成了特性或bug修正,你想合并所有分支的修改主干上,让别人...
  • excel表格怎么把一个单元格中添加3条分割线先把行高调整合适高度在工具栏右侧右击,调出“绘图”工具栏。在“绘图”工具栏上用“直线”工具绘制单元格的斜线。在“绘图”工具栏上用“文本框”工具制作斜线表头中的...
  • 使用Git Bash管理项目文件

    千次阅读 2017-11-17 19:10:40
    利用 cd E:\github 定位版本库文件夹 在git中添加用户名和对用的邮件信息,使得记录每一个添加修改的人 查看用户名和密码 将文件夹变为对应的git版本库,并生成相应的git管理文件 2.在版本库中添加文件...
  • ffmpeg裁剪合并视频

    2016-12-16 22:43:26
    比如说,你想把视频的从一分20秒开始,30秒的视频裁剪出来,保存成一个视频。这是这个文章要讨论的问题。   一 裁剪视频   ffmpeg提供简单的命令参数: ffmpeg -ss START -t DURATION -i INPUT...
  • if ((*t).seconds==60) //计时满一分,进位 { (*t).seconds=0; (*t).minutes++; } if ((*t).minutes==60) //计时满一小时,进位 { (*t).minutes=0; (*t).hours++; } if((*t).hours==24) (*t).hours=0; /...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,037
精华内容 814
关键字:

多份文件合并到一份