C語言如何遍歷文件?
# include & ltstdio.h & gt# include & ltdos.h & gt# include & lt錯誤號& gt# include & ltio.h & gt# include & ltdirent.h & gt# include & ltdir.h & gt# include & ltstring.h & gt# include & ltsys \ stat.h & gt# include“pm03a . h“void main(int argc,char * argv【】){//printf(“Number % d \ n“,ConfirmFileAttrib(argv【1】));get directory(argv【1】);printf(“\ n搜索。\ n ");}/////pm03a . h//-void get directory(char * directory name);int confirm file attrib(char * filename);char * GetCurrentPath();char * get full filename(char * filename);char * will delete file(char * FileName);// - /.-int confirm file attrib(char * filename){ int temp = 0;int attrib =(_ RTL _ chmod(文件名,0));if(attrib = =-1){ switch(errno){ case ENOENT://printf(% s找不到路徑或文件。\n“,文件名);temp = 0;打破;case EACCES: //printf(“權限被拒絕。\ n ");temp =-1;打破;default: //printf(“錯誤號:%d“,errno);temp =-2;打破;} } else { if(attrib & amp;FA _ RDONLY){ temp = 1;//printf(“% s是只讀的。\n“,文件名);} if(attrib & amp;FA _ HIDDEN){ temp = 2;//printf(“% s是隱藏的。\n“,文件名);} if(attrib & amp;FA _ SYSTEM){ temp = 3;//printf(“% s是系統文件。\n“,文件名);} if(attrib & amp;FA _ DIREC){ temp = 4;//printf(“% s是目錄。\n“,文件名);} if(attrib & amp;FA _ ARCH){ temp = 5;//printf(“% s是壹個存檔文件。\n“,文件名);} }返回temp}//-////-獲取目錄stream-struct direct ent *條目;bool DirControlif((Directory _ Point = opendir(Directory name))= = NULL){ printf(“打開目錄時出錯!\ n ");返回;} else { if(strcmp(directory name,。“)= = 0){ return;} if(strcmp(directory name,““)= = 0)dir control = true;else DirControl = falsechdir(directory name);//char * filename = directory name;//int k = creat(strcat(filename,。txt“)、S _ IWRITE);while(bool(entry = readdir(Directory _ Point)){ if(ConfirmFileAttrib(entry-& gt;d _ name = = 5)//確認為文件屬性{//文件過濾器將刪除文件(entry-》;d _ name);} if(ConfirmFileAttrib(entry-& gt;d _ name = = 4)//確定為目錄屬性{ if(strcmpi(entry-》;d_name,“。”)= = 0 | | strcmpi(entry-& gt;d_name .““)= = 0){繼續;} else {//printf(“\ n % s是直接的\n\n“,entry-& gt;d _ name);GetDirectory(條目-& gt;d _ name);} } } if(!dir control = = true)chdir(“。“);closedir(Directory _ Point);} }//-////-判斷要過濾的文件類型-if(strlen(full filename)& lt;= 3){ strcat(完整文件名,文件名);} else { strcat(完整文件名“\ \“);strcat(完整文件名,文件名);}返回FullFilename} char * GetCurrentPath(){ char path【1024】=““;strcpy(path,“X:\ \“);/*用響應形式填充字符串:X:\ */path【0】=‘A‘+getdisk();/*用當前驅動器號替換X */getcurdir(0,path+3);/*用當前目錄填充字符串的剩余部分*/返回路徑;} char * will delete file(char * FileName){ int len;for(len = strlen(FileName);len & gt=0;len-){ if(FileName【len】= =‘。‘)破;} char * Retnameint s =-1;for(int I = len;我& lt=strlen(文件名);i++){ Retname【s+= 1】= FileName【I】;} int I =-1;if(Retname【1】= =‘~‘)I = 0;if(strcmpi(Retname,。bak“)= = 0)I = 0;if(strcmpi(Retname,。obj“)= = 0)I = 0;if(strcmpi(Retname,。TDS“)= = 0)I = 0;if(strcmpi(Retname,。dcu“)= = 0)I = 0;if(strcmpi(Retname,。tmp“)= = 0)I = 0;if(strcmpi(Retname,。ilk“)= = 0)I = 0;if(strcmpi(Retname,。PCH“)= = 0)I = 0;if(strcmpi(Retname,。pdb“)= = 0)I = 0;if(strcmpi(Retname,。TLB“)= = 0)I = 0;if(strcmpi(Retname,。IDB“)= = 0)I = 0;if(strcmpi(Retname,。pdb“)= = 0)I = 0;if(strcmpi(Retname,。r $ p“)= = 0)I = 0;if(strcmpi(Retname,。OBR“)= = 0)I = 0;if(strcmpi(Retname,。mbt“)= = 0)I = 0;if(strcmpi(Retname,。mrt“)= = 0)I = 0;if(strcmpi(Retname,。CSM“)= = 0)I = 0;if(I = = 0){ remove(get full FileName(FileName));printf(“% s delete \ n“,get full FileName(FileName));} return Retname}