C/C++知识点之Mac下用C语言实现代码合并功能
小标 2018-10-10 来源 : 阅读 1452 评论 0

摘要:本文主要向大家介绍C/C++知识点之Mac下用C语言实现代码合并功能了,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍C/C++知识点之Mac下用C语言实现代码合并功能了,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

            

程序功能:

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

操作方法:

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

 1 #include
 2 #include
 3 #include
 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 }

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 1
看完这篇文章有何感觉?已经有2人表态,50%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved