[英]How can i access directories in C90 without dirent.h?
我在基于C90的LabCVI中工作。
当前的储罐将在“ .. \\ data”目录和子目录中找到“ * .spec”文件的绝对路径。
我知道有人在解释我如何使用dirent.h做到这一点,但我需要在没有dirent.h的情况下做到这一点。 本教程(第一部分 , 第二部分 )不是我想要的。 LabCVI不具有dirent标头,并且我不能从Internet导入ist,因为dirent.h的依赖项与LabCVI不兼容。
一旦我杀死了对LabCVI的所有依赖关系,我计划迁移到更好的IDE /语言,但是那天我必须保持代码的可移植性。 所以我不能使用LabCVI的目录实用程序。
我该如何解决并获得目录访问权限? (该代码将在XP计算机上运行。)
C语言本身没有目录的概念,因此无法列出或访问它们。 如果您的系统不符合POSIX(指定dirent.h
)等更高级别的标准,则需要寻找特定于系统的解决方案。
您可以使用FindFirstFile
和类似的函数来执行此操作。 检查此示例代码以获取更多详细信息: http : //msdn.microsoft.com/zh-cn/library/aa365200%28v=vs.85%29.aspx
Vikram的回答使我写下了我曾经用过的这段代码。
void findSpecFilesAndPrint(void){
HANDLE hFind;
WIN32_FIND_DATA FindFileData;
hFind = FindFirstFile("*.*", &FindFileData);
if (hFind == INVALID_HANDLE_VALUE){
//FOUND NO FILE
printf("No file found.\n");
}
else {
printf("Files found - one function to find them all.\n");
do{
//DO THIS WITH ALL FILES FOUND
printf(FindFileData.cFileName);
printf("\n");
}while (FindNextFile(hFind, &FindFileData) != 0);
printf("And in the darkness bind them.\n");
FindClose(hFind);
}
}
查找当前目录中的所有文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.