findnext()函数调用在第二次调用时失败。程序崩溃

时间:2012-07-27 17:29:49

标签: c msvcrt

第二次调用_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并尝试了大部分具有返回值的东西,但没有成功。有什么想法吗?

1 个答案:

答案 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);
}