For some reason the program crashes at the GetFiles function.Anyone willing to help?Thanks
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
void ReadDirectory(char **maindir);
void GetFiles(char *directory,char ***filenames,int *number);
int main()
{
int number,i;
char *maindir = NULL,**mainfilenames = NULL;
printf("Give the directory where the movies are: ");
ReadDirectory(&maindir);
GetFiles(maindir,&mainfilenames,&number);
for(i=0;i<number;i++)
{
printf("%s\n",mainfilenames[i]);
}
system("PAUSE");
return 0;
}
void ReadDirectory(char **maindir)
{
int c,size = 0;
char *temp = NULL;
*maindir = malloc((size+1));
(*maindir)[size] = '\0';
size++;
while((c = getchar()) != EOF && c != '\n')
{
temp = realloc(*maindir,size+1);
if(temp)
{
*maindir = temp;
(*maindir)[size-1] = c;
(*maindir)[size] = '\0';
size++;
}
else
{
printf("Error (A) reallocating memory.\n");
exit(1);
}
}
temp = NULL;
free(temp);
}
void GetFiles(char *directory,char ***filenames,int *number)
{
struct dirent *dent;
DIR *dir;
int size;
char **temp;
if((dir = opendir(directory)) == NULL)
{
printf("Can't open directory %s!\n",dir);
exit(2);
}
size = 0;
*number = 0;
*filenames = malloc(*number+1);
(*filenames)[*number] = malloc(size+1);
(*filenames)[*number][size] = '\0';
while ((dent = readdir(dir)) != NULL)
{
if (!strcmp(dent->d_name,".") || !strcmp(dent->d_name,".."))
{
continue;
}
temp = realloc(*filenames,*number+1);
if(temp)
{
*filenames = temp;
while(dent->d_name[size] != '\0')
{
size++;
temp[*number] = realloc((*filenames)[*number],size+1);
if(temp[*number])
{
(*filenames)[*number] = temp[*number];
(*filenames)[*number][size-1] = dent->d_name[size-1];
(*filenames)[*number][size] = '\0';
}
else
{
printf("Error (C) reallocating memory.\n");
exit(1);
}
}
}
else
{
printf("Error (B) reallocating memory.\n");
exit(1);
}
(*number)++;
}
closedir(dir);
}