_finddata_t, _findfirst, _findnext for Mac OS-X
Posted
技术标签:
【中文标题】_finddata_t, _findfirst, _findnext for Mac OS-X【英文标题】: 【发布时间】:2015-09-25 14:17:15 【问题描述】:我正在尝试使用 CodeBlocks 和 GCC 编译器在 OS-X 上编译一个程序:
extern int listFiles(void)
struct _finddata_t myFile;
int hFile;
if ((hFile = _findfirst("*.txt", &myFile)) == -1L)
printf("No text files in current directory.\n");
return 0;
printf("File name: %s File size: %d", myFile.name, myFile.size);
while (_findnext(hFile, &myFile) == 0)
printf("File name: %s File size: %d", myFile.name, myFile.size);
_findclose(hFile);
return 1;
但是,编译失败并出现以下错误:
error: variable has incomplete type 'struct _finddata_t'
我假设这是一个仅限 Windows 的结构,用于_findfirst and _findnext
。 我可以使用哪些等效的结构和函数在 OS-X 上编译它?
【问题讨论】:
如果我不得不猜测,我会看dirent 是的,opendir
和 readdir
【参考方案1】:
作为Igor Tandetnikcommented,你应该看看函数opendir()
,
readdir()
,
closedir()
*,以及 DIR *
和 struct dirent
类型。这是读取目录中每个条目的基本低级接口,以不确定的顺序显示名称(实际上,通常是名称出现在原始目录中的顺序,但通常不是字母顺序或任何其他顺序) 没有任何过滤。
如果您想过滤文件名以便只选择 .txt
文件,那么您必须转到 POSIX 中更晦涩的部分:scandir()
。这允许您提供一个选择器函数(一个回调),告诉scandir()
何时返回一个给定的条目,并且还接受一个用于对名称列表进行排序的比较器函数(就像通过qsort()
一样)。
*
在搜索时,我还找到了fdopendir()
和
dupfd()
。它们相当新,而且很有趣。
【讨论】:
以上是关于_finddata_t, _findfirst, _findnext for Mac OS-X的主要内容,如果未能解决你的问题,请参考以下文章
JAVA07_Stream流中FindFirst方法查找元素第一个
JAVA07_Stream流中FindFirst方法查找元素第一个
JAVA07_Stream流中FindFirst方法查找元素第一个