1

第二次调用时该_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 并尝试了大多数返回值的东西,但没有成功。有任何想法吗 ?

4

1 回答 1

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);
}
于 2012-07-27T17:36:00.323 回答