读取的代码方式如下:
int main()
{
long file;
struct _finddata_t find;
_chdir("d:\\");
if((file=_findfirst("", &find))==-1L)
{
printf("空白!\n");
exit(0);
}
printf("%s\n", findname);
while(_findnext(file, &find)==0)
{
printf("%s\n", findname);
}
_findclose(file);
return 0;
}
1、如果是在window环境下,可以用一下方法:
使用stdlibh头文件声明的system()函数,调用系统命令dir,把c:目录下文件列表写入文件dirtxt中
2、使用direnth头文件中声明的opendir(),readdir()函数;
3、如果没有direnth,可以使用ioh头文件中声明的_findfirst(),_findnext()函数:
//获取指定目录下的所有文件列表 author:wangchangshaui jlu
char getFileNameArray(const char path, int fileCount)
{
int count = 0;
char fileNameList = NULL;
struct dirent ent = NULL;
DIR pDir;
char dir[512];
struct stat statbuf;
//打开目录
if ((pDir = opendir(path)) == NULL)
{
myLog("Cannot open directory:%s\n", path);
return NULL;
}
//读取目录
while ((ent = readdir(pDir)) != NULL)
{ //统计当前文件夹下有多少文件(不包括文件夹)
//得到读取文件的绝对路径名
snprintf(dir, 512, "%s/%s", path, ent->d_name);
//得到文件信息
lstat(dir, &statbuf);
//判断是目录还是文件
if (!S_ISDIR(statbufst_mode))
{
count++;
}
} //while
//关闭目录
closedir(pDir);
// myLog("共%d个文件\n", count);
//开辟字符指针数组,用于下一步的开辟容纳文件名字符串的空间
if ((fileNameList = (char) myMalloc(sizeof(char) count)) == NULL)
{
myLog("Malloc heap failed!\n");
return NULL;
}
//打开目录
if ((pDir = opendir(path)) == NULL)
{
myLog("Cannot open directory:%s\n", path);
return NULL;
}
//读取目录
int i;
for (i = 0; (ent = readdir(pDir)) != NULL && i < count;)
{
if (strlen(ent->d_name) <= 0)
{
continue;
}
//得到读取文件的绝对路径名
snprintf(dir, 512, "%s/%s", path, ent->d_name);
//得到文件信息
lstat(dir, &statbuf);
//判断是目录还是文件
if (!S_ISDIR(statbufst_mode))
{
if ((fileNameList[i] = (char) myMalloc(strlen(ent->d_name) + 1))
== NULL)
{
myLog("Malloc heap failed!\n");
return NULL;
}
memset(fileNameList[i], 0, strlen(ent->d_name) + 1);
strcpy(fileNameList[i], ent->d_name);
myLog("第%d个文件:%s\n", i, ent->d_name);
i++;
}
} //for
//关闭目录
closedir(pDir);
fileCount = count;
return fileNameList
搜索qqexe嘛
多线程文件搜索
有个更简单的方法(不是c/c++,用的是bat批处理)
输入指令:
for /R c:\ %%i In (qqexe) Do If Exist %%i echo %%i >>d:\resulttxt
上面的指令是在c:找qqexe 找到了的话把路径存放到d:\resulttxt里
char szPathTemp[512];
GetModuleFileName(NULL, szPathTemp, 512);
//取出文件路径
for (int i=strlen(szPathTemp); i>=0; i--)
{
if (szPathTemp[i] == '\\')
{
szPathTemp[i] = '\0';
break;
}
}
这样试试,我用没问题
DOS程序的装入程序会提供正在运行的可执行文件的路径全名。这个路径全名是通过指针argv[0]提供的,mai‘n()函数的argv变量指向该指针。只需去掉路径全名中的文件名,你就得到了正在运行的程序所在的目录。下面的例子演示了这种技巧:
# include <stdio h>
# include <stdlib h>
# include <string h>
void main(int argc, char argv)
{
char execDir [80];
int i,t;
/ set index into argv[0] to slash character prior to appname /
for(i= (strlen(argv[0])-1) ;
((argv[O][i] ! ='/' ) && (argv[O][i]! =' \\' ));--i) ;
/ temporarily truncate argv[] /
t =argv[O][i] ;
argv[O][i]= O ;
/ copy directory path into local buffer /
strcpy(execDir ,argv[O]) ;
/ put back original character for sanity's sake /
argvEO]Ei]=t;
}
以上就是关于C语言怎么读取某一文件夹下的所有文件夹和文件全部的内容,包括:C语言怎么读取某一文件夹下的所有文件夹和文件、c语言读取文件的路径怎么设定、C和C++怎么知道一个程序是否已经安装并获取他的安装路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)