专门做自助游攻略的网站是哪个/永久免费低代码开发平台
前情提要
可以在本地先创个具体的文件夹目录
代码实现
#include <stdio.h>
#include<io.h>
#include<string.h>
#define MaxSize 100//这里是目录底下最多的文件数量设置,文件数量设置要多余等于实际情况,不然不能全部出来
int search(char *,char *,char *);//文件夹遍历函数
void Connect(char*,char*,char*);//字符串连接函数void main()
{char a[50]="";char b[6]="\\*.*"; // *.*代表全部类型的文件,类似的 *.txt则代表txt类型的文件char d[50]="";printf("输入文件夹位置:");scanf("%s",a); //输入你要遍历的目录printf("输入想要查找的文件名称:");scanf("%s",d);search(a,b,d); //调用遍历文件夹的函数
}int search(char *a,char *b,char *d)
{ //文件夹遍历函数char c[100],*p1,*p2;int i;p1=c;Connect(a,b,p1);struct _finddata_t file;long fHandle;if( (fHandle=_findfirst(c, &file ))==-1L ){printf( "当前目录下没有文件\n");return 0;}elsedo{if (file.attrib & _A_SUBDIR){//判断是否为"."当前目录,".."上一层目录if ((strcmp(file.name, ".") != 0) && (strcmp(file.name, "..") != 0)){char newPath[100];p2=newPath;Connect(a,"\\",p2);//函数执行完成后p2仍指向newPath[0]for(int i=0;newPath[i]!='\0';i++){p2++;}//移动指针Connect("",file.name,p2);search(newPath,b,d);//递归调用}}else{char b1[MaxSize];//用来存放文件的具体位置,注意需要大量的空间int j=0;for(i=0;a[i]!='\0';i++)b1[j++]=a[i];b1[j++]='\\';for(i=0;file.name[i]!='\0';i++)b1[j++]=file.name[i];b1[j]='\0';if(strcmp(file.name,d)==0)//判断文件名是否找到,找到便输出printf("%s\n",b1); }}while( _findnext(fHandle,&file)==0 );_findclose( fHandle );return 0;
}void Connect(char* str1, char* str2, char* p)
{ //字符串连接函数int i = 0;while(*str1 != '\0'){*p = *str1;str1++;p++;}while(*str2!='\0'){*p = *str2; str2++;p++;}*p = '\0';//收尾结束
}
输出
输入
D:\网课安排\数据结构\实验九文件夹
代码解析
struct _finddata_t file;
/**
struct _finddata_t
{
unsigned attrib;
time_t time_create;
time_t time_access;
time_t time_write;
_fsize_t size;
char name[_MAX_FNAME];
};time_t time_create: 这里的time_t是一个变量类型(长整型?相当于long int?),用来存储时间的,我们暂时不用理它,只要知道,这个time_create变量是用来存储文件创建时间的就可以了。
time_t time_access: 文件最后一次被访问的时间。
time_t time_write: 文件最后一次被修改的时间。
_fsize_t size: 文件的大小。这里的_fsize_t应该可以相当于unsigned整型,表示文件的字节数。
char name [_MAX_FNAME ]:文件的文件名。这里的_MAX_FNAME是一个常量宏,它在头文件中被定义,表示的是文件名的最大长度。
*/
/**
long _findfirst( char *filespec, struct _finddata_t *fileinfo );返回值: 如果查找成功的话,将返回一个long型的唯一的查找用的句柄(就是一个唯一编号)。这个句柄将在_findnext函数中被使用。若失败,则返回-1。
*/
long fHandle;
if( (fHandle=_findfirst(c, &file ))==-1L )
{
printf( "当前目录下没有文件\n");
return 0;
}