生活随笔
收集整理的這篇文章主要介紹了
批量删除文件注释
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用以刪除一個目錄下類似“# *****”格式的配置文件注釋,只可刪除單獨的行。
#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)))?{????????????????????if((!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)?{????????????????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));?????????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];????????????};??????#ifdef?__USE_LARGEFILE64???struct?dirent64?????{???????__ino64_t?d_ino;???????__off64_t?d_off;???????unsigned?short?int?d_reclen;???????unsigned?char?d_type;???????char?d_name[256];????????????};???#endif?????????enum?????{???????DT_UNKNOWN?=?0,???#?define?DT_UNKNOWN?DT_UNKNOWN???????DT_FIFO?=?1,???#?define?DT_FIFO????DT_FIFO???????DT_CHR?=?2,???#?define?DT_CHR?????DT_CHR???????DT_DIR?=?4,???#?define?DT_DIR?????DT_DIR???????DT_BLK?=?6,???#?define?DT_BLK?????DT_BLK???????DT_REG?=?8,???#?define?DT_REG?????DT_REG???????DT_LNK?=?10,???#?define?DT_LNK?????DT_LNK???????DT_SOCK?=?12,???#?define?DT_SOCK????DT_SOCK???????DT_WHT?=?14???#?define?DT_WHT?????DT_WHT?????};??? ?
?
轉載于:https://blog.51cto.com/dazhang/785459
總結
以上是生活随笔為你收集整理的批量删除文件注释的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。