批量删除文件注释
来源:互联网 发布:知乎如何进入话题广场 编辑:程序博客网 时间:2024/05/16 04:47
用以删除一个目录下类似“# *****”格式的配置文件注释,只可删除单独的行。
#include <stdio.h>#include <string.h>#include <dirent.h>#include <time.h>int traversal_dir(const char *dir, int dept);int del_file_com(const char *file_path);int main(int argc, char *argv[]){if(argc<2) {fprintf(stdout, "input dir...\n");return -1;}int dept = 0;traversal_dir(argv[1], dept);return 0;}int traversal_dir(const char *dir, int dept){DIR *dirptr = NULL;if(NULL == (dirptr=opendir(dir))) {fprintf(stdout, "no such dirpath:%s\n", dir);return -1;}struct dirent *entry;while(NULL != (entry=readdir(dirptr))) {//when the entry is sub_dir into itif((!strcmp(entry->d_name, ".")) || (!strcmp(entry->d_name, ".."))) {continue;}int i;for(i=0; i<dept; ++i) {fprintf(stdout, " ");}char dir_buf[1024];snprintf(dir_buf, sizeof(dir_buf), "%s/%s", dir, entry->d_name);if(DT_DIR == entry->d_type) { /* 4 */fprintf(stdout, "dir:%s/%s\n", dir, entry->d_name);traversal_dir(dir_buf, dept+4);} else if (DT_REG == entry->d_type) {fprintf(stdout, "file:%s\n", entry->d_name);del_file_com(dir_buf);} else {continue;}}return 0;}int del_file_com(const char *file_path){const char *old_file = file_path;char new_file[1024];snprintf(new_file, sizeof(new_file), "%s.%ld", old_file, time(NULL));//fprintf(stdout, "del_file_com...\n");//fprintf(stdout, "old_file:%s, new_file:%s\n", old_file, new_file);FILE *fp_from = fopen(old_file, "r");FILE *fp_to = fopen(new_file, "w");if((NULL==fp_from) || (NULL==fp_to)) {return -1;}char line[1024];char *cp = line;while(NULL != (fgets(cp, sizeof(line), fp_from))) {while(((' '==*cp)||('\t'==*cp)||('\n'==*cp)) && ('\0'!=*cp)) {++cp;}if(('#'!=*cp) && ('\0'!=*cp)) {fprintf(fp_to, "%s", line);}cp = line;}fclose(fp_from);fclose(fp_to);rename(new_file, old_file);return 0;}
备注:
struct dirent {#ifndef __USE_FILE_OFFSET64 __ino_t d_ino; __off_t d_off;#else __ino64_t d_ino; __off64_t d_off;#endif unsigned short int d_reclen; unsigned char d_type; char d_name[256];/* We must not include limits.h! */ };#ifdef __USE_LARGEFILE64struct dirent64 { __ino64_t d_ino; __off64_t d_off; unsigned short int d_reclen; unsigned char d_type; char d_name[256];/* We must not include limits.h! */ };#endif/* File types for `d_type'. */enum { DT_UNKNOWN = 0,# define DT_UNKNOWNDT_UNKNOWN DT_FIFO = 1,# define DT_FIFODT_FIFO DT_CHR = 2,# define DT_CHRDT_CHR DT_DIR = 4,# define DT_DIRDT_DIR DT_BLK = 6,# define DT_BLKDT_BLK DT_REG = 8,# define DT_REGDT_REG DT_LNK = 10,# define DT_LNKDT_LNK DT_SOCK = 12,# define DT_SOCKDT_SOCK DT_WHT = 14# define DT_WHTDT_WHT };
- 批量删除文件注释
- 批量删除PDF注释
- 批量删除PDF注释
- 批量删除PDF注释
- 批量删除代码注释
- vim 批量删除注释
- notepad批量删除注释
- C# 代码文件头部注释批量写入, 函数注释批量删除的工具
- VS中批量删除注释
- vim 批量注释及删除注释
- 好压助手--批量添加文件、删除文件、设置密码、添加注释[隆重推出]
- java批量清除文件注释
- 批处理 批量删除文件
- Linux批量删除文件
- 批量删除文件
- Linux批量删除文件
- 批量删除文件
- 批量删除文件
- 生成一组指定范围内随机数(取50个数字,100到200的随机数字)
- 强人Hibernate文档笔记
- java singleton model
- 按回车提交表单
- 从Hibernate中获得JDBC连接
- 批量删除文件注释
- JavaScript的陷阱
- gcc编译选项总结
- VC 强制重启电脑的方法
- android用于打开各种文件的intent
- COM新手使用中一个易混淆的问题
- Collection(三) 增强for循环
- 表格边框的纯css方法
- Facility