Osaisikohan joku kertoa, mikä mahdollisesti on pielessä, kun saan jatkuvasti seuraavasta koodinkohdasta virheen "segmentation fault"...
*tulos = malloc((luettu 1)*sizeof(char))
(Siinä on ympärillä if-lause, if(...) == NULL jne, mutta sinne asti ohjelma ei ikinä pääse.)
*tulos = malloc((luettu 1)*sizeof(char))
(Siinä on ympärillä if-lause, if(...) == NULL jne, mutta sinne asti ohjelma ei ikinä pääse.)
Vastaukset 3
Vanhimmat
*tulos tarkoittaa tulos-osoittimen osoittamaa arvoa muistissa. tämä ei ole se mitä haet takaa.
tee näin:
char* tulos = 0;
tulos = (char*)malloc((luettu 1)*sizeof(char));
Ja lisäyksenä voisi sanoa, että se virhe eli segfaultti tulee luultavasti siitä, että tuonne tuloksen osoittamaan arvoon yritetään kirjoittaa. Jos poistat sen tähtösen, niin segfaultti katoaa, mutta sitä ei tiedä, onko ohjelma vielä oikein.
Pointterit ovat vaikeita. Kertaapa mitä se * tarkoittaa määrittelyssä ja mitä käytössä. (Suunnattu alkup. kysyjälle, ei neuvojalle.)
Äh, sori, huonosti muotoiltu kysymys. Itse asiassa sen oli ihan tarkotus olla *taulu siinä missä olikin, kun se mun alkuperäinen muuttuja oli char**-tyyppinen. Tän olis voinut tietty mainita...mutta nyt sainkin sen toimimaan, mun virhe olikin pääohjelmassa, jossa kutsuin funktiotani väärällä tavalla (määrittelin muuttujan **char ja kutsuin sen nimellä, vaikka piti olla *char ja kutsun edessä &-merkki..)
Kiitos paljon silti jälleen, molemmille. :)