Функция _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 и пробовал большинство вещей с возвращаемым значением, но безуспешно. Любые идеи ?
_findfirst
,_findnext
,_find*
? Я не помню, чтобы это было в стандарте C. - person ArjunShankar   schedule 27.07.2012_find*
является частью Microsoft Visual C++. Я бы предложил редактировать с соответствующими тегами. - person ArjunShankar   schedule 27.07.2012_findfirst
очевидно возвращаетintptr_t
,_findnext
иint
- person fvu   schedule 27.07.2012_findfirst
. ">Стандарт C. - person ArjunShankar   schedule 27.07.2012#include
вы используете, чтобы иметь возможность использовать этот_find*
материал? Версию GCC обычно можно получить, выполнивgcc --version
(по крайней мере, так работает моя копия GCC в дистрибутиве GNU/Linux. Не знаю о Windows.) - person ArjunShankar   schedule 27.07.2012opendir - readdir - closedir
. У меня сложилось впечатление, что вы используете Visual C++. - person fvu   schedule 27.07.2012