У меня есть следующий код, который будет печатать все имена файлов из заданного каталога. Но ошибка Segmentation fault (core dumped)
. У меня нет опыта использования strcpy с указателями.Ошибка сегментации (сбрасывание ядра) при использовании с strcpy
skipping include
extern int errno;
typedef struct fileinfo
{
char filename[256];
off_t filesize;
time_t mtime;
} FILE_INFO;
int main(int argc, char **argv) {
DIR *dir;
struct dirent *d_ent;
FILE_INFO **file_info;
int i = 0, j = 1;
if((dir = opendir("/")) ==NULL) goto err;
file_info = (FILE_INFO **)malloc(sizeof(FILE_INFO *) * j);
while((d_ent = readdir(dir)) != NULL)
{
file_info = (FILE_INFO **)realloc(file_info,sizeof(FILE_INFO *) * j);
strcpy(file_info[j]->filename, d_ent->d_name); //Error here Segmentation fault (core dumped)
j++;
}
for(i =0 ; i > j; i++)
{
printf("%s\n", file_info[i]->filename);
}
free(file_info);
return 0;
err:
printf("Error is : %d : %s", errno, strerror(errno));
return 0;
}
[Пожалуйста, не набрасывайте возвращаемое значение 'malloc()' и друзей, в C] (http://stackoverflow.com/a/605858/28169). – unwind