Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Problém v C s return [vyřešeno]  (Přečteno 1832 krát)

Šuohob

  • Závislák
  • ***
  • Příspěvků: 2171
Problém v C s return [vyřešeno]
« kdy: 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?
« Poslední změna: 16 Srpna 2009, 20:11:36 od Bohouš »
Tak dlouho se vrzá s Acerem, až se displej utrhne.

Martin - ViPEr*CZ*

  • Závislák
  • ***
  • Příspěvků: 3047
Re: Problém v C s return
« Odpověď #1 kdy: 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!!!
« Poslední změna: 16 Srpna 2009, 19:21:32 od Martin - ViPEr*CZ* »
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

premet

  • Host
Re: Problém v C s return
« Odpověď #2 kdy: 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));

Martin - ViPEr*CZ*

  • Závislák
  • ***
  • Příspěvků: 3047
Re: Problém v C s return
« Odpověď #3 kdy: 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
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

Šuohob

  • Závislák
  • ***
  • Příspěvků: 2171
Re: Problém v C s return
« Odpověď #4 kdy: 16 Srpna 2009, 20:10:49 »
Díky za radu, věděl jsem že je to hloupá chyba ;)
Tak dlouho se vrzá s Acerem, až se displej utrhne.

 

Provoz zaštiťuje spolek OpenAlt.