![]() |
список файлов в директории
есть такой кусок программы на с++, который вроде как должен возвращать список файлов в директории(их имена). Но почему то на 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() Может кто нибудь подсказать в чем тут дело?!! :молись: |
ты не выделяеш память (malloc) для самого flist.
|
понятно. Тогда такой вопрос - а как мне её выделить если я не знаю заранее сколько файлов в директории?
|
есть 2 варианта:
1. выделить Х элементов, и если этого не хватает, выделить Х*2 и переписать первые Х (и т.д.) 2. использовать vector<FLIST*> - он делает (1) но сам :). <- реккомендую |
Цитата:
|
есть даже более простой вариант - исползуй vector<FLIST> и не морочся с malloc/free (или new/delete)
П.С. а спасибы - в карму :beer: |
| Часовой пояс GMT +4, время: 23:30. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.