事情的经过是这样的,我想批量给c程序的
开头加上```c\n,结尾加上\n```,
在网上查了下,没查到类似的工具,正好最近在学linux,就打算自己写一个程序,奈何自己的半吊子水平,写了一个多小时才写好。 这里最大设置了读100000字节的文件,可以根据需求自己修改源码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<dirent.h>
int main(int argc,char *argv[])
{
char *strr[100];
for(int i=0;i<100;i++)
{
strr[i]=(char *)malloc(128);
}
int i=0;
//打开目录
//DIR *opendir(const char *name);
DIR *pDir = opendir(argv[1]);
if(pDir==NULL)
{
perror("opendir error");
return -1;
}
//循环读取目录项
//struct dirent *readdir(DIR *dirp);
struct dirent *pDent = NULL;
while((pDent=readdir(pDir))!=NULL)
{
//过滤掉.和..文件
if(strcmp(pDent->d_name, ".")==0 || strcmp(pDent->d_name, "..")==0)
{
continue;
}
//判断文件类型
switch(pDent->d_type)
{
case DT_REG:
sprintf(strr[i],"%s/%s", argv[1],pDent->d_name);
printf("%s",strr[i]);
i++;
break;
default:
break;
}
printf("\n");
}
//关闭目录
closedir(pDir);
int len = i;
for(i=0;i<len;i++)
{
int fd = open(strr[i],O_RDWR | O_CREAT,0777);
if(fd<0)
{
perror("open error");
}
char buf[100000];
memset(buf,0,sizeof(buf));
read(fd,buf,sizeof(buf));
close(fd);
char name[128];
memset(name,0,sizeof(name));
sprintf(name,"%scopy",strr[i]);
printf("%s\n",name);
fd = open(name,O_RDWR | O_CREAT | O_APPEND,0777);
char buf2[100000];
memset(buf2,0,sizeof(buf));
char *str="```c\n";
char *str2="```";
sprintf(buf2,"%s%s%s",str,buf,str2);
//printf("%s",buf2);
write(fd,buf2,strlen(buf2));
close(fd);
}
return 0;
}
拿了几个文本文件测试一下,未发现任何问题,用
Typora正常打开