I dont know whats terribly going wrong with this, well I know there's some memory allocation with this but I tried hard to fix it and when it gets fixed it doesn't shows up the desired value, this is the code that shows the compile-time error:
Code:
#include <stdio.h>
#include <string.h>
#define $WORD_LIST(X) "resource/" X
typedef struct char_type
{
char** ptr;
}ccarray;
int ccarray_create(ccarray *c)
{
c = (ccarray*)malloc(sizeof(ccarray*));
c->ptr = (char**) malloc(sizeof(char**) * 1024);
return 0;
}
int ccarray_insert(ccarray *c, char* str, int pos)
{
c->ptr[pos] = str;
printf("%d %s\n", pos, c->ptr[pos]);
}
int ccarray_destroy(ccarray *c)
{
free( c->ptr );
free( c );
return 0;
}
int ccarray_read_file(ccarray* c, char* filename)
{
FILE * fptr;
char* line;
int i;
fptr = fopen(filename, "r");
line = (char*) malloc(sizeof(char)*100);
i = 0;
while( fscanf(fptr,"%s",line) != EOF )
{
ccarray_insert(c, line, i);
i++;
}
free(line);
fclose(fptr);
}
int ccarray_print(ccarray* c)
{
int i = 0;
while ( c->ptr[i] != NULL )
{
printf("Line: %s\n", c->ptr[i] );
i++;
}
}
int main()
{
ccarray * c;
ccarray_create(c);
ccarray_read_file(c, $WORD_LIST("sample.txt"));
ccarray_print(c);
ccarray_destroy(c);
return 0;
}
... and this thing runs fine but doesn't shows any result:
Code:
#include <stdio.h>
#include <string.h>
#define $WORD_LIST(X) "resource/" X
typedef struct char_type
{
char** ptr;
}ccarray;
int ccarray_create(ccarray **c)
{
(*c) = (ccarray*)malloc(sizeof(ccarray));
(*c) = (ccarray*)malloc(sizeof(ccarray));
(*c)->ptr = (char**) malloc(sizeof(char**) * 1024);
return 0;
}
int ccarray_insert(ccarray **c, char* str, int pos)
{
(*c)->ptr[pos] = str;
//printf("%s ", (*c)->ptr[pos] );
}
int ccarray_destroy(ccarray **c)
{
free( (*c)->ptr );
free( c );
return 0;
}
int ccarray_read_file(ccarray** c, char* filename)
{
FILE * fptr;
char* line;
int i;
fptr = fopen(filename, "r");
line = (char*) malloc(sizeof(char)*100);
i = 0;
while( fscanf(fptr,"%s",line) != EOF )
{
ccarray_insert(c, line, i);
i++;
}
free(line);
fclose(fptr);
}
int ccarray_print(ccarray** c)
{
int i = 0;
while ( (*c)->ptr[i] != NULL )
{
printf("Line: %s\n", (*c)->ptr[i] );
i++;
}
}
int main()
{
ccarray * c;
ccarray_create(&c);
ccarray_read_file(&c, $WORD_LIST("sample.txt"));
ccarray_print(&c);
ccarray_destroy(&c);
return 0;
}