máme textový soubor, který obsahuje toto (čísla narychlo vymyšlená...1.sloupec je ID, druhý je rodič a třetí je obsah):
Kód: Vybrat vše
1 0 1
2 1 2
3 1 1
4 1 3
5 2 4
Kód: Vybrat vše
#include "stdafx.h"
#include "stdlib.h"
int velikost=0;
typedef struct {
//definice datove struktury
int id;
int rodic;
int obsah;
} Prvek;
Prvek* alokuj_pole(){
return (Prvek *) malloc(velikost * sizeof (int));
}
Prvek* napln_strom(Prvek* s){
FILE *fr;
fr = fopen("strom.txt", "r");
int i,id,rodic,obsah;
for (i = 0; i < velikost; i++) {
fscanf(fr, "%d %d %d\n", &id, &rodic, &obsah);
s[i].id = id;
s[i].rodic = rodic;
s[i].obsah = obsah;
}
return s;
}
void vypis_strom(Prvek* s) {
//funkce rekurzivne vypise v graficke podobe cely strom
int i;
for (i = 0; i < velikost; i++) {
printf("%d %d [%d] \n", s[i].id, s[i].rodic, s[i].obsah);
}
}
void zapis_do_souboru(Prvek *s){
FILE *fw;
int i;
fw = fopen("strom.txt", "w");
for(i=0;i<velikost;i++){
fprintf(fw, "%d %d %d\n", s[i].id, s[i].rodic, s[i].obsah);
}
fclose(fw);
}
int _tmain(int argc, _TCHAR* argv[])
{
Prvek *strom;
velikost=zjisti_velikost_ze_souboru();
strom=alokuj_pole();
strom=napln_strom(strom);
vypis_strom(strom);
return0;
}
Měl jsem nápad, a to takový že si to co mám do teď v poli struktury(tedy v poli strom) dal do nějakého dočasného pomocného pole int a pak nějak znovu vytvořil se zvětčenou velikostí to pole strktur (pole strom)...vše funguje do doby než začnu z pomocného pole vše načítat zpět do nově vytvořeného pole strom...nezapíšu tam nic-visual studio mě okamžite vykopne s chybou...pravděpodobně zapisuju někam kam nemám...
Otázka tedy zní-jak smazat Prvek* strom a zase udělat strom=(Prvek *) malloc(zvetšená_velikost * sizeof (int));
Budu vděčný za každou radu- na tomhle jsem se zasek a dál nemůžem postupovat...včera jsem málem vyhodil noťase z vokna

