[C]遍历目录下所有文件

#include<iostream>
#include<string.h>
#include<io.h>
FILE *fp;
using namespace std;
void traval(char name[]);//遍历一个目录
//int i=0;
void main()
{
if((fp=fopen("data.txt","w"))==NULL)
{
cout<<"打开写文件失败! ";
return;
}
char name[250]="D:\Code\Pic\*.*";
traval(name);
fclose(fp);
}
void traval(char name[])//遍历一个目录
{
char name1[250];
_finddata_t file;
long lf;
if((lf=_findfirst(name,&file))==-1l)
{
cout<<"该目录不存在! ";
fprintf(fp,"该目录不存在! ");
}
else
{
while(_findnext(lf,&file)==0)
{
if(file.name[2]==0)continue;
cout<<file.name<<" ";
fprintf(fp,"%s ",file.name);
if(file.attrib==0)
{
cout<<"正常 ";
fprintf(fp,"正常 ");
}
if((file.attrib%2)==1)
{
cout<<"只读 ";
fprintf(fp,"只读 ");
}
if((file.attrib==2)||(file.attrib==3)||(file.attrib==6)||(file.attrib==7)||
(file.attrib==18)||(file.attrib==19)||(file.attrib==22)||(file.attrib==23)||
(file.attrib==34)||(file.attrib==35)||(file.attrib==38)||(file.attrib==39)||
(file.attrib==50)||(file.attrib==51)||(file.attrib==54)||(file.attrib==55))
{
fprintf(fp,"%s ",file.name);
cout<<"隐藏 ";
fprintf(fp,"隐藏 ");
}
if((file.attrib==4)||(file.attrib==5)||(file.attrib==6)||(file.attrib==7)||
(file.attrib==20)||(file.attrib==21)||(file.attrib==22)||(file.attrib==23)||
(file.attrib==36)||(file.attrib==37)||(file.attrib==38)||(file.attrib==39)||
(file.attrib==52)||(file.attrib==53)||(file.attrib==54)||(file.attrib==55))
{
cout<<"系统 ";
fprintf(fp,"系统 ");
}
if((file.attrib>=32&&file.attrib<=55))
{
cout<<"存档 ";
fprintf(fp,"存档 ");
}
if((file.attrib>=16&&file.attrib<=23)||(file.attrib>=48&&file.attrib<=55))
{
cout<<"文件夹 ";
cout<<endl;
fprintf(fp,"文件夹 ");
strcpy(name1,name);
name[strlen(name)-3]='';//最后三个字符去掉
name=strcat(name,file.name);//
name=strcat(name,"\*.*");
cout<<endl<<name<<endl;
//fprintf(fp," %s ",name1);
traval(name);
strcpy(name,name1);
}
else
{
cout<<endl;
fprintf(fp," ");
}
}
}
_findclose(lf);
}

原文地址:https://www.cnblogs.com/sylar120/p/3578544.html