Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Šuohob 16 Srpna 2009, 19:05:27

Název: Problém v C s return [vyřešeno]
Přispěvatel: Šuohob 16 Srpna 2009, 19:05:27
Dobrý den, učím se C a celkem rychle jsem narazil:
Část kódu:
Kód: [Vybrat]
int getLine(FILE *file){

char *radek;
if (!feof (file)){
fgets (radek, 100, file);
return radek;
}
}

int main(int argc, char** argv)
{

FILE *file;

if ((file=fopen ("soubor.txt", "r"))==NULL){
printf ("Soubor nejd otevrit");
exit (1);
}


        //zavolani funkce
        printf ("%s\n", getLine(file));



        fclose (file);
}


Po spuštění programu se objeví: Segmentation fault
Způsobí ho tento řádek: fgets (radek, 100, file);

Nejspíš to bude asi hodně hloupá chyba, ale už se s tím mořím dost dlouho... Poradíte někdo?
Název: Re: Problém v C s return
Přispěvatel: Martin - ViPEr*CZ* 16 Srpna 2009, 19:19:57
nemáte inicializovanou proměnnou.... tj. nealokoval jste ji místo v paměti... tudíž program se pokusí zapsat na neexistující blok paměti a spadne...


chybí:

Kód: [Vybrat]
malloc(...); //nevím z hlavy jak je to definované...používám new z C++

Poté nezapomeňte proměnnou uvolnit!!!
Název: Re: Problém v C s return
Přispěvatel: premet 16 Srpna 2009, 19:24:19
nemáte inicializovanou proměnnou.... tj. nealokoval jste ji místo v paměti... tudíž program se pokusí zapsat na neexistující blok paměti a spadne...


chybí:

Kód: [Vybrat]
malloc(...); //nevím z hlavy jak je to definované...používám new z C++


Kód: [Vybrat]
radek = (char *) malloc(100 * sizeof(char));
Název: Re: Problém v C s return
Přispěvatel: Martin - ViPEr*CZ* 16 Srpna 2009, 19:26:00
nemáte inicializovanou proměnnou.... tj. nealokoval jste ji místo v paměti... tudíž program se pokusí zapsat na neexistující blok paměti a spadne...


chybí:

Kód: [Vybrat]
malloc(...); //nevím z hlavy jak je to definované...používám new z C++


Kód: [Vybrat]
radek = (char *) malloc(100 * sizeof(char));
Dík... já myslel, aby se dotyčný kouknul do helpu... ;-) docela dobrá a nezbytná věc při procesu vývoje... no neuspěšné maskování  ;D
Název: Re: Problém v C s return
Přispěvatel: Šuohob 16 Srpna 2009, 20:10:49
Díky za radu, věděl jsem že je to hloupá chyba ;)