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
-
Dobrý den, učím se C a celkem rychle jsem narazil:
Část kódu:
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?
-
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í:
malloc(...); //nevím z hlavy jak je to definované...používám new z C++
Poté nezapomeňte proměnnou uvolnit!!!
-
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í:
malloc(...); //nevím z hlavy jak je to definované...používám new z C++
radek = (char *) malloc(100 * sizeof(char));
-
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í:
malloc(...); //nevím z hlavy jak je to definované...používám new z C++
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
-
Díky za radu, věděl jsem že je to hloupá chyba ;)