C语言文件遍历

遍历某个目录,将目录文件名写入到一个文件中

void SearchFolder(char* folderPath, FILE *fp)  

{  
    _finddata_t FileInfo;  
    char strfind[255];
    char strTemp[255],strTemp2[10];


memset(strfind, 0, sizeof(strfind));
strcat(strfind, folderPath);
strcat(strfind, "\\*");
long Handle = _findfirst(strfind, &FileInfo);  
    if (Handle == -1L)  
    {  
        printf("not find any files under %s\n",strfind);
        return;
    }  
    do{  

        if (FileInfo.attrib & _A_SUBDIR)      
        {  
            if( (strcmp(FileInfo.name,".") != 0 ) &&(strcmp(FileInfo.name,"..") != 0) )     
            {  
                //printf("find a folder %s\n", FileInfo.name);
char newPath[255];
memset(newPath, 0, sizeof(newPath));
strcat(newPath, folderPath);
strcat(newPath, "\\");
strcat(newPath, FileInfo.name);
fwrite("-",1,1,fp);
//fwrite(FileInfo.name, strlen(FileInfo.name), 1, fp);
char *displayPath = substr(newPath, path);
fwrite(displayPath,strlen(displayPath), 1, fp);
SearchFolder(newPath, fp, flag);
            } 
        }  
        else    
        {  
char buf[30];  
memset(strTemp, 0, sizeof(strTemp));
strcpy(strTemp, FileInfo.name);
strcat(strTemp, " ");
sprintf(strTemp2, "%d",FileInfo.size);
strcat(strTemp, strTemp2);
strcat(strTemp, " ");
                seconds2ymdhms(buf, FileInfo.time_write);
strcat(strTemp,buf);
strcat(strTemp, "\n");
fwrite(strTemp,strlen(strTemp), 1, fp); 
        }  
    }while (_findnext(Handle, &FileInfo) == 0);  
  
    _findclose(Handle);  

}  


char *substr(char *src, char *part)
{
    char *p;
    if (part) {
p = src+ strlen(part)+1;
}
else 
p=src;
return p;
}


/convert seconds since 1970 to y-m-d h:m:s
void seconds2ymdhms (char *buf, time_t time)
{
   struct tm *local;  
   local=localtime(&time);
   strftime(buf,30,"%Y-%m-%d %H:%M:%S",local);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值