Witam
Próbuję odczytać dane z pliku i umieścić je w buforze. Zamiast tworzyć 30 tablic chcę stworzyć tablice wskaźników aby tam umieścić wskaźniki do poszczególnych stringów. A więc w main() zadeklarowałem pamięć
char **bufor=(char**)malloc(30 * sizeof(char));
for(i=0;i<30;i++){
bufor[i]=(char*)malloc(300 * sizeof(char));
}
1)Proszę mnie poprawić ale jeśli dobrze rozumuję zrobiłem coś następującego.
Zadeklarowałem wskaźnik , który określa początek miejsca w pamięci gdzie kolejno będzie utworzonych 30 wskaźników do zmiennej typu char. Następnie dla każdego wskaźnika przypisałem pamięć 300 "pól" z czego każde pole jest wielkości char. Tak?
2)Czy powyższy zapis jest równoważny z tym zapisem jeśli zdefiniujemy tą tablicę jako zmienną globalną i zostanie ona z racji tego zainicjowana zerami? char*bufor[30];
3) Funkcję wczytująca dane z pliku wywołałem w ten sposób read(bufor)
a zdefiniowałem następująco void read(char**buf)
Czy to znaczy że wysłałem do funkcji jako argument wskaźnik do wskaźników na char?
4)Następnie przy użyciu poniższego kodu próbuję pobrać kolejne linie i zapisać je w pamięci.
i=0;
while( (fgets(buf[i],350,plik))!=NULL){
puts(buf[i]);
i++;
}
Nie chce działać. Kiedy w main() próbuję wyświetlić zawartość char**bufor są tam same śmieci i w połowie program się wysypuje.
CO ciekawe gdy używam lokalnej zwykłej tablicy wszystko działa. Na przykład :
char lokalny[1000];
while( (fgets(lokalny,350,plik))!=NULL){
puts(lokalny);
}
Prosiłbym o pomoc w rozwiązaniu tego i napisanie czy dobrze rozumuje powyższe zagadnienia.