Struktrurka do wczytywania pliku do pamięci
Mariusz:
Załóżmy że chcemy wczytać do pamięci zawartość jakiegoś stosunkowo małego pliku
Wg mnie przydałaby się strukturka
struct node{
int nol; //numer linii w pliku
int nochil; //liczba znaków w linii
char* line; //zawartość linii
struct node* next; //wskaźnik do węzła przechowującego zawartość następnej linii w pliku
struct node* prev; //wskaźnik do węzła przechowującego zawartość poprzedniej linii w pliku
};
Teraz przydałoby się napisać funkcje do obsługi tej strukturki
Z pola int nochil można by zrezygnować gdyby wymyślić jakiś inny sposób allokacji pamięci
na tablicę znakową char* line
Z pola struct node* prev też można by zrezygnować
ale wtedy po strukturce poruszalibyśmy się tylko w jedną stronę
25 wrz 16:58
g: Proponuję inaczej:
1) dowiedzieć się jaka jest długość pliku,
2) zaalokować pamięć i wczytać plik jednym ruchem,
3) pierwszy raz przejrzeć plik żeby policzyć linie, przy okazji znaki końca linii można
pozamieniać na zera,
4) zaalokować pamięć na wektor pointerów na początki linii,
5) drugi raz przejrzeć plik żeby nadać wartości pointerom.
25 wrz 20:04
Mariusz:
Chciałbym czytać plik z dysku tylko raz
Pomyślałem o liście bo nie wiemy ile jest znaków w linii
a łańcuch w C jest trochę kiepsko pomyślany tzn jako tablica znakowa
więc aby zaallokować pamięć na niego trzeba znać jego długość
Po wtóre nie znamy liczby linii w pliku
Może taka strukturka byłaby lepsza
struct node{
void *data;
struct node* next;
struct node* prev;
};
13 paź 03:52