Я пытаюсь прочитать и обработать все файлы в каталоге.
Если использовать только readdir()
и считать количество файлов в каталоге, то все в порядке. Однако, если я скопирую имя файла strcpy()
и перейду к другой функции, readdir()
вернет NULL
после чтения 4 файлов.
struct A {
char file_path[100];
double ave;
};
struct Calc {
struct A array[10];
char* max_filename;
double max;
char* min_filename;
double min;
};
int handle() {
DIR* fd;
int count = 0;
struct Calc *calc = calloc(sizeof(struct Calc), 0);
calc->min = -1;
calc->min_filename = NULL;
calc->max = 0;
calc->max_filename = NULL;
// open the directory and check
fd = opendir(DATA_DIR);
if (fd == NULL)
{
printf("Cannot open the directory %s\n", DATA_DIR);
closedir(fd);
return -1;
}
struct dirent * entry;
int file_count = 0;
while ((entry = readdir(fd)) != NULL) {
if (entry->d_type == DT_REG) { /* If the entry is a regular file */
file_count++;
if (count == 9)
{
D(calc);
count = 0;
}
struct A *a = &calc->array[count];
strcpy(a->file_path, entry->d_name);
calc->array[count].ave = 0;
C((void*)a);
count++;
}
}
printf("Total files: %d\n", file_count);
closedir(fd);
D(calc);
free(calc);
return 0;
}
int C(void *v)
{
// code
}
int D(void *v)
{
// code
}
Кто-нибудь знает, в чем причина этого? Большое спасибо!