1

2回目に呼び出された_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();
}

フォルダー内の最初の 2 つのファイルの名前を取得して出力すると、プログラムはクラッシュしますtmp。出力される最初のファイル名はfindfirst()関数からのものです。次のファイル名はfindnext(). デバッグで確認しました。

findnext()がループで 2 回目に呼び出されると、プログラムがクラッシュします。私は gcc を使用しており、戻り値でもほとんどのことを試しましたが、成功しませんでした。何か案は ?

4

1 に答える 1

2

あなたの問題は_findnext、ハンドルに値を割り当てることができないことです.2つの変数が必要です:

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 に答える