c语言编译器 for mac,C语言代码计算神器for Mac

#include

#include

#include

//计算代码行数

int countAmount(char a[])

{

int i,sum = 0;

for(i = 0; a[i]; i++)

{

int flag = 0;

//查找这个回车符与上一个回车符之间是否存在内容,回车符的ASCII值是10

if (a[i] == 10) {

for(int j = i - 1; j > 0 && a[j] != 10; j--) {

//ASCII值13不知道是什么字符,但总是出现在换行前面

if (a[j] != ' ' && a[j] != 13) {

flag = 1;

break;

}

}

}

if (flag) {

sum++;

}

}

//如果最后一行没有换行则加1

if (a[i-1] != 10) {

sum++;

}

return sum;

}

int main()

{

/**要执行的find命令*/

char command[5000];

/**需要合并代码的文件夹路径*/

char folderPath[5000];

/**文件后缀名*/

char suffix[20];

/**存放所有搜索到的文件路径的临时文件,在这个文件中每个路径单独占一行,最后这个文件会被删除*/

char tempFile[5000];

/**临时文件的指针*/

FILE *fTempFile;

/**单个文件路径*/

char singleFile[5000];

/**单个文件的指针*/

FILE *fSingleFile;

/**存放单个文件中的所有内容*/

char singleFileContent[1000000];

/**单个文件代码数量*/

int singleFileAmount;

/**所有文件代码总量*/

int allFileAmount;

/**文件的数量*/

int fileNum;

char ch,ch2;

int i,flag;

while(1)

{

printf("请拖入文件夹路径:");

scanf("%s",folderPath);

printf("请输入要合并文件的后缀(如.c,.txt):");

scanf("%s",suffix);

//生成不完整的find命令

strcpy(command,"find ");

strcat(command,folderPath);

strcat(command," -name *");

strcat(command,suffix);

strcat(command,">>");

//生成临时文件的全路径

strcpy(tempFile,folderPath);

strcat(tempFile,"/temp.txt");

//生成完整的find命令

strcat(command,tempFile);

//执行Unix下的find命令,将搜索到的内容输出到temp.txt文件中

system(command);

fTempFile = fopen(tempFile,"r");

fileNum = 0;

allFileAmount = 0;

while(1)

{

i=-1;

//每次得到一个文件的全路径

while((singleFile[++i]=fgetc(fTempFile))!=10&&singleFile[i]!=EOF);

if(singleFile[i]==EOF)

{

break;

}

singleFile[i]=0;//文件内容结尾标志

singleFileAmount = 0;

ch2 = 0;

fSingleFile=fopen(singleFile,"r");//打开文件

i=0;

while((ch=fgetc(fSingleFile))!=EOF)

{

singleFileContent[i++] = ch;

}

singleFileContent[i] = 0;

singleFileAmount = countAmount(singleFileContent);

fileNum++;

printf("%d:%d行 %s\n",fileNum,singleFileAmount,singleFile);

allFileAmount += singleFileAmount;

fclose(fSingleFile);

}

fclose(fTempFile);

//生成删除临时文件的命令

strcpy(singleFile,"rm ");

strcat(singleFile,tempFile);

system(singleFile);//删除临时文件

printf("\n\n此文件夹下:\n\n");

printf("共计%d个.c文件\n\n",fileNum);

printf("共计代码:%d行\n\n",allFileAmount);

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值