Miért nem lehet átadni a tömb értékét?
Az array tömböt szeretném különböző értékekkel feltölteni de valamiért mindegyiknek ugyanaz lesz az értéke amit utoljára beállítok.
Tehát a nulladik elemnek line1-nek kellene lenni az első elemnek pedig line2 de valamiért mind a kettőnek line2 érték jut.
Miért lehet ez?
A 4-5 sorban a tömbbe olyan adatokat töltesz, amik a 6-os sorban megszűnnek létezni, a függvény lokális adatai, a kiíratáskor már érvénytelenek.
Olvass utána a változók láthatóságának, érvényességének, és esetleg a verem (stack) működésének függvényhíváskor.
array[0] = line1;
Ezzel semmi mást nem csinálsz, mint a line1 pointerét átadod az array[0]-nak. A probléma ezzel az, hogy a line1 egy lokális változó, ami a függvény lefutása után felszabadul, és az általa mutatott memóriaterület felülírhatóvá válik. Amit te akarsz, az érték szerint átmásolni a szöveget az array[0]-ba. Ezt vagy úgy teszed, hogy eleve egy string literált adsz át neki:
array[0] = "line1";
Vagy a strcpy függvény használatával átmásolod a line1-ről az array[0]-ra. Ezesetben viszont figyelj oda, hogy az array[0]-n először kellő mennyiségű memóriát kell lefoglalnod, mielőtt rámásolhatsz, ezt a malloc() függvénnyel meg tudod tenni:
array[0] = malloc(sizeof(line1)) //line1 hosszának megfelelő méretű memóriaterületet foglalsz le
strcpy(array[0], line1) //átmásolod az értéket array[0]-ra.
Így már működni is fog.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!