Chciałbym zrobić tablicę wskaźników z danych wczytanych z pliku. To jest to co próbowałem zrobić i nie wyszło niestety:
#define MAX_NUM_ELEMENTS 512
...
char **filename;
...
buf = malloc(MAX_NUM_ELEMENTS);
n = 0;
for(i = 0, j=0; (*(buf + i) = getc(inp)) != EOF; i++, j++){
if(i >= MAX_NUM_ELEMENTS){
if( (tmp = realloc(buf, 2 * i)) == NULL)
break;
else
buf = tmp;
}
if(*(buf + i) != '\n')
*(*(filename + n) + j) = *(buf + i);
else{
j=-1;
n++;
}
}
for(i = 0; i < n; i++){
printf("%s\n", *(filename + i));
}
...
free(buf);
return 0;
}
Plik, z którego pobieram dane, ma postać:
plik.txt
plik1.txt
plik2.txt
...
Co ja tutaj robie zle??
Dodam, że wcześniej zrobiłem to w ten sposób i wszystko działało w porządku:
#define MAX_NUM_ELEMENTS 512
...
char filename[30][32];
...
buf = malloc(MAX_NUM_ELEMENTS);
n = 0;
for(i = 0, j=0; (*(buf + i) = getc(inp)) != EOF; i++, j++){
if(i >= MAX_NUM_ELEMENTS){
if( (tmp = realloc(buf, 2 * i)) == NULL)
break;
else
buf = tmp;
}
if(*(buf + i) != '\n')
filename[n][j] = *(buf + i);
else{
j=-1;
n++;
}
}
for(i = 0; i < n; i++){
printf("%s\n", filename[i]);
}
...
free(buf);
return 0;
Czy dobrze zamieniłem *(*(filename + n) + j) = *(buf + i);
na filename[n][j] = *(buf + i);
i poprawnie wyświetlam?printf("%s\n", *(filename + i));