Predstavte si, že mám súbor:
Prvy riadok bla bla
Druhy riadok bla bla
Treti riadok bla bla
Prva riadok 2 bla bla
Druhy riadok 2 bla bla
Treti riadok 2 bla bla
... a takto sa opakujúci rovnaký počet riadkov s nejakými údajmi.
Píšem funkciu, v ktorej potrebujem určitý riadok (v mojom prípade napríklad každý piaty riadok súboru) nahrať do samostatného stringu.
Kostra funkcie je takáto:
Kód: Vybrať všetko
funkcia(subor, ***pole){
// while na pocitanie riadkov
// zistenie poctu danych zaznamov (cize pocet riadkov deleno pocet riadkov v odstavci udajov v subore)
// ked viem pocet riadkov ktore potrebujem, alokujem si jeden rozmer dvojrozmerneho pola:
*pole = (char**) malloc (riadkov * sizeof(char*));
// dalej tam mam:
while(!feof(subor)){
// skumam napr. kazdy piaty riadok (tie potrebujem), a meriam ich dlzku, ulozim to do premennej "dlzka" (toto funguje)
P1: // teraz potrebujem alokovat druhy rozmer pola aby malo rozmer "dlzka", a bol by som schopny don narvat cely riadok
// potrebujem zapisat tento riadok do tej casti pola - musim sa vratit v subore o "dlzka"-znakov naspat, to som spravil takto:
while(dlzka_unget != dlzka){
ungetc(c,f);
dlzka_unget++;
}
P2: // teraz, ked som opat na zaciatku spravneho riadku, potrebujem tento riadok zapisat do uz alokovanej casti pola:
fgets(*(*pole), dlzka, subor); // mozno nejako takto?
}
}