第二次调用_findnext()
函数不起作用。这是代码。
int main() {
struct _finddata_t ffblk;
intptr_t done;
chdir("tmp");
printf("Directory changed to dir successfully\n");
done=_findfirst("*.txt",&ffblk);
printf("Call to findfirst successful\n");
printf("%s\n",ffblk.name);
do{
done=_findnext(done,&ffblk);
printf("%s\n",ffblk.name);
} while(!done);
printf("Exited the main loop\n");
getch();
}
程序崩溃后会崩溃并打印文件夹tmp
中前两个文件的名称。
打印的第一个文件名来自findfirst()
函数。下一个文件名由findnext()
打印。我通过调试检查过。
现在,当循环第二次调用findnext()
时,程序崩溃了。我正在使用gcc并尝试了大部分具有返回值的东西,但没有成功。有什么想法吗?
答案 0 :(得分:2)
您的问题是您无法将_findnext
的值分配给句柄,您需要两个变量:
intptr_t handle = 0;
int done = 0;
handle = _findfirst("*.txt",&ffblk);
while(handle && done != -1)
{
printf("%s\n",ffblk.name);
done = _findnext(handle,&ffblk);
}