Mac下用C语言实现代码合并功能

  • 程序功能:

  将一个文件夹下包括所有子文件夹中的所有指定类型文件内容合并到一个文件中.

  • 操作方法:

    用Xcode编译成功后将生成的可执行文件拖到桌面再双击打开,这样做可以直接将文件夹路径拖入,方便省事.

完整代码如下:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 int main()
 5 {
 6     /**要执行的find命令*/
 7     char command[5000];
 8     /**需要合并代码的文件夹路径*/
 9     char folderPath[5000];
10     /**文件后缀名*/
11     char suffix[20];
12     /**存放所有搜索到的文件路径的临时文件,在这个文件中每个路径单独占一行,最后这个文件会被删除*/
13     char tempFile[5000];
14     /**临时文件的指针*/
15     FILE *fTempFile;
16     /**单个文件路径*/
17     char singleFile[5000];
18     /**单个文件的指针*/
19     FILE *fSingleFile;
20     /**存放单个文件中的所有内容*/
21     char singleFileContent[1000000];
22     /**合并后的文件*/
23     char mergedFile[5000];
24     /**合并文件的指针*/
25     FILE *fMergedFile;
26     /**文件的数量*/
27     int fileNum;
28     char ch;
29     int i;
30     while(1)
31     {
32         printf("请拖入文件夹路径:");
33         scanf("%s",folderPath);
34         printf("请输入要合并文件的后缀(如.c,.txt):");
35         scanf("%s",suffix);
36         //生成不完整的find命令
37         strcpy(command,"find ");
38         strcat(command,folderPath);
39         strcat(command," -name *");
40         strcat(command,suffix);
41         strcat(command,">>");
42         //生成临时文件的全路径
43         strcpy(tempFile,folderPath);
44         strcat(tempFile,"/temp.txt");
45         //生成完整的find命令
46         strcat(command,tempFile);
47         //执行Unix下的find命令,将搜索到的内容输出到temp.txt文件中
48         system(command);
49         //生成合并的文件全路径
50         strcpy(mergedFile,folderPath);
51         strcat(mergedFile,"/mergedFile.txt");
52         fTempFile=fopen(tempFile,"r");
53         fMergedFile=fopen(mergedFile,"w");
54         fileNum=0;
55         while(1)
56         {
57             i=-1;
58             //每次得到一个文件的全路径
59             while((singleFile[++i]=fgetc(fTempFile))!=10&&singleFile[i]!=EOF);
60
61             if(singleFile[i]==EOF)
62             {
63                 break;
64             }
65             singleFile[i]=0;//文件内容结尾标志
66             fSingleFile=fopen(singleFile,"r");//打开文件
67             i=0;
68             while((ch=fgetc(fSingleFile))!=EOF)
69             {
70                 singleFileContent[i++]=ch;
71             }
72             singleFileContent[i]=0;
73             fileNum++;
74             printf("\n%d:%s\n\n",fileNum,singleFile);
75             fprintf(fMergedFile,"%d:%s\n",fileNum,singleFile);
76             fprintf(fMergedFile,"%s\n\n",singleFileContent);
77             fclose(fSingleFile);
78         }
79         fclose(fTempFile);
80         fclose(fMergedFile);
81         //生成删除临时文件的命令
82         strcpy(singleFile,"rm ");
83         strcat(singleFile,tempFile);
84         system(singleFile);//删除临时文件
85         if(fileNum==0) printf("\n查询无结果!\n\n");
86         else printf("\n%d个文件已合并输出到%s下!\n\n",fileNum,mergedFile);
87
88     }
89     return 0;
90 }
  • 结果:

时间: 2024-10-12 10:22:06

Mac下用C语言实现代码合并功能的相关文章

Golong语言学习--Mac下搭建go语言开发环境(学习摘抄)

Go语言是Google内部主推的语言,它作为一门全新的静态类型开发语言,与当前的开发语言相比具有许多令人兴奋不已的新特性.专门针对多处理器系统的应用程序编程进行了优化,使用go语言完全可以媲美c.c++的速度,而且更加安全.简洁,支持并行进程. 以下是go语言的主要特性: 1.自动垃圾回收 2.更丰富的内置类型 3.函数多反回值 4.错误处理 5.匿名函数和闭包 6.类型和接口 7.并发编程 8.反射 9.语言交互性 Mac开发环境搭建 以上基本都属废话,搭建开发环境尽快开启编程之旅才是王道,笔

mac下使用github 上传代码(转)

提起github相信大家都不会陌生,在这里就不再赘述了.作为开源代码库以及版本控制系统,使用好了确实会非常受益,再说的势利点,你找工作时给面试官说你经常维护自己的技术博客和github,相信你给他的印象会好很多. windows底下如何使用github,很多好心人都已经给了非常详细的解决方案,你只需问下度娘,她会帮你解决,这里对于windows底下的使用我也就不再赘述了.这里主要讲讲如何在mac底下使用github,我刚开始使用时,还是费了一点功夫的,因为网上的资料比较杂,有些不是太准确.故将自

Mac下搭建go语言开发环境

一.下载安装go 到墙内下载go的安装包: http://www.golangtc.com/download 点击安装包然后进行安装 二.配置 1.查看环境 go version 2.安装完sdk之后接下来便是配置环境变量了,打开终端输入cd ~ 进入用户主目录,之后输入ls -all命令查看是否存在.bash_profile 文件,存在既使用vim .bash_profile打开并编辑该文件.根据自己实际情况,内容如下: export GOPATH=/Users/apple/Documents

JSPatch在MAC下的使用

简单调研JSPatch的使用,之所以在MAC下是因为可以创建一个命令行的应用,简化无关代码.具体做法如下: 第一步,去https://github.com/bang590/JSPatch/tree/master/JSPatch下载JSEngine.h.JSEngine.m和JSPatch.js三个文件,并拖入工程,并选择Copy items if needed: 第二步,添加一个被测试的类,并给它定义一个类方法,稍后我们将用JSPatch替换该方法.我在该方法中输出了字符串:Hello Worl

Mac下SublimeText 3配置C语言编译环境

1. SublimeText简述 Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim.一款文本编译器怎么才能满足大部分程序员的需求呢? 首先,它得是跨平台的,linux,win,mac都可以用,每个平台上的软件都很好用也很关键: 其次功能强大(插件丰富),占用内存小,界面友好,比如编辑状态退出会自动保存,下次打开方便编译: 还有就是方便提交ftp, svn, git,查看本地文件历史纪录: 以上三个优点SublimeT

mac下实现代码远程同步

近期将办公电脑从windows换成了mac,以前一直用windows,在windows下面将代码同步到远程的开发机,zend studio有一些内置的工具,但mac下的zend stduio没有了这个工具.而sublime一些同步插件太难用,于是网上搜索,自己来实现同步. 1,在mac上面后台运行一个脚本,原理就是用mac的fswatch命令检测目录内文件的变化,然后通过rsync命令同步变化的文件到远程开发机,代码如下: PWD="/Users/huangxuan01/Desktop/baid

【原】Mac下统计任意文件夹中代码行数的工具——cloc

这里介绍一个Mac系统统计代码行数的工具cloc. 1.首先,安装homebrew,已安装的请跳过. 打开终端工具Terminal,输入下列命令.过程中会让你按RETURN键以及输入mac桌面密码,按照提示进行操作即可: ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2.利用homebrew下载并安装cloc. 继续在Terminal中输入: brew

Mac下命令行发邮件【搭配php(shell_exec...)等脚本语言,轻松发邮件,告别各种依赖库】

用到的是msmtp,一个smtp客户端,比sendmail,postfix更加轻量.用自己的QQ邮箱(163...)发邮件的话,很适合. Mac下安装很简单,一句话:brew install msmtp 另外需要配置两个文件: ~/.mailrc: ~/.msmtp: 正式发送: 收到洛: PHP发送的话,用shell_exec之类的函数,就不用多说啦,命令当然支持更多的参数,详细可参考相关文档或者Terminal输msmtp --help查看.

在mac下安装jdk1.7(转)

转自:http://vela.diandian.com/post/2012-01-06/15379924 最近呢,想玩玩jdk1.7,不过mac平台下的jvm一直都是Apple自己改的,所有有些麻烦.这篇文章呢,就是一个详细的步骤,教你如何在mac下安装和使用jdk1.7.当然了,和你想象的一样,我是不会写什么有技术含量的文章的,所以只是一个简单的guide. 首 先呢,为了少出问题,先要让平台装一个java,Snow Leopard下还好(默认就有),Lion的话默认是没有安装任何jvm的,安