IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   список файлов в директории (https://www.imho.ws/showthread.php?t=105823)

karah 11.07.2006 16:47

список файлов в директории
 
есть такой кусок программы на с++, который вроде как должен возвращать список файлов в директории(их имена). Но почему то на 78 файле выкидывает ошибку First-chance exception at 0x00329833 in file_rd.exe: 0xC0000005: Access violation writing location 0x00000000.

typedef struct
{
char fname[MAX_PATH];
}FLIST;

int get_list_of_files(char* dir,FLIST** fl)
{
long id;
struct _finddata_t file_info;
int i = 0;

id = _findfirst(dir,&file_info);
fl[i] = (FLIST*)malloc(sizeof(FLIST));
memset(fl[i]->fname, 0,sizeof(FLIST));
strcpy(fl[i]->fname, file_info.name);

if(-1 == id)
{
return -1;
}
else
{
while(_findnext(id,&file_info) == 0)
{
i++;
fl[i] = (FLIST*)malloc(sizeof(FLIST));
memset(fl[i]->fname, 0, sizeof(FLIST));
strcpy(fl[i]->fname, file_info.name);
}

_findclose(id);
}

return 0;
} // get_list_of_files()


int main(int argc, char** argv)
{
FLIST* flist;

get_list_of_files("C:\\files\\*.bmp", &flist);


return 0;
} // main()

Может кто нибудь подсказать в чем тут дело?!! :молись:

Drakosha 11.07.2006 16:55

ты не выделяеш память (malloc) для самого flist.

karah 11.07.2006 17:01

понятно. Тогда такой вопрос - а как мне её выделить если я не знаю заранее сколько файлов в директории?

Drakosha 11.07.2006 17:09

есть 2 варианта:
1. выделить Х элементов, и если этого не хватает, выделить Х*2 и переписать первые Х (и т.д.)
2. использовать vector<FLIST*> - он делает (1) но сам :). <- реккомендую

karah 11.07.2006 17:12

Цитата:

Сообщение от Drakosha
есть 2 варианта:
1. выделить Х элементов, и если этого не хватает, выделить Х*2 и переписать первые Х (и т.д.)
2. использовать vector<FLIST*> - он делает (1) но сам :). <- реккомендую

буду пробывать. Спасибо

Drakosha 11.07.2006 17:15

есть даже более простой вариант - исползуй vector<FLIST> и не морочся с malloc/free (или new/delete)

П.С. а спасибы - в карму :beer:


Часовой пояс GMT +4, время: 23:30.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.