Nemám teraz síl, tak som len označil chyby komentárom (a trochu ten kód sformátoval, lebo tvoj je nečiteľný)
Pointa je v tom, že si alokuješ pole, ale ukazateľ naň kľudne stratíš. Z funkcie si ho musíš vrátiť a funkcií load ho zase poslať ako parameter.
Kód:
#include<stdio.h>
int pocet_slov(FILE* text)
{
int pocitadlo=0;
int z;
while(fscanf(text,"%d",&z)==1)
{
pocitadlo=pocitadlo +1;
}
malloc(); // wtf is this shit? Zmazat.
return pocitadlo;
}
int* alokuj_rozmerne_pole(int pocet_slov )
{
int pole1; // int * pole1;
pole1=(char*) malloc(pocet_slov );
return 0; // vraciam pointer, takze return pole1;
}
void load(FILE* text,int velkost_pola)
{
int i=0,z,pole1;
while(fscanf(text,"%d",&z)==1)
{
pole1[i]=z; //chyba - no tak urcite, ked pole1 je cislo a nie pole
i= i+1;
if(i<=(velkost_pola-1))
{
fclose(text);
return 0;
}
printf("%d ",pole1[1]); //chyba - detto
}
fclose(text);
}
void main() // ziadny void, main vracia vzdy int! Nezabudnut na konci return 0;
{
FILE *text;
int pocet;
text = fopen("text.txt", "r");
pocet=pocet_slov(text);
printf("Pocet cisel v text.txt : %d \n",pocet);
alokuj_rozmerne_pole(pocet); // kde si ulozim pointer na alokovane pole? No nikde.
load(text,pocet); // kde vezme funkcia load alokovane pole? No nikde.
}