Kezdőoldal » Számítástechnika » Programozás » Segmentation fault megoldása...

Segmentation fault megoldása mi lehet? C-nyelv.

Figyelt kérdés

A fordító a következőkre ír ki segmentation fault-ot


Van a mainben egy fájlmegnyitás, és addig olvasson a program, amíg tart a fájl:


while(fscanf(f, "%s", string))!=EOF

{if(fgets(string, 100, f)!=NULL


Itt az akar lenni, hogy ugye addig olvasson a fájl ameddig tart, és amíg nem jön a fájlban üres sor, addig egy függvény kapja meg a sorra bejövő sztringeket


És ekkor stringet kapja meg egy függvény:


fuggveny(char* string)


Ekkor a függvényben(amíg nem jön kettőspont)

for(int i=0; strchr(string, ':')!=NULL; i++)

{j++;

if s[i]==' '

j=0;}


Vagyis amíg nincs kettőspont, addig j számoljon 0tól (nyilván van beállítva kezdeti érték), és ha szóköz jön, 0zza ki.


És itt a hiba



2021. dec. 1. 10:41
 1/5 anonim ***** válasza:
100%
Debug mit mond? :)
2021. dec. 1. 11:13
Hasznos számodra ez a válasz?
 2/5 A kérdező kommentje:
Annyit, hogy segmentation fault ott xddd. Ennyit.
2021. dec. 1. 11:55
 3/5 anonim ***** válasza:
50%

"Segmentation fault megoldása mi lehet?"

Ne piszkálj olyan memóriaterületet ami nem a tiéd.

2021. dec. 1. 12:11
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:

indítsd el gdb-vel(vagy akármilyen más debuggerrel) és látni fogod, hogy mi okozta a segfaultot.

Ami biztos, hogy olyan memóriaterületet piszkálsz, ami nem a tied(ahogy #3 írta).

Ez több módon is megtörténhet:

- Kihagytál valami hibakezelést, az egyik pointered NULL lett és azt használva akarsz memóriát elérni

- Elrontottál valami pointer aritmetikát és lett egy olyan pointered, ami olyan memóriára mutat, ami nem a tied.

- Túlírsz valami buffert(ez tkp az elözö pont speciális esete)

biztos van más módja is, hogy segfaultot kapj, de én ezekkel kezdeném a nyomozást.

2021. dec. 1. 12:34
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

[link]

Dokumentációt kéretik olvasni, különös tekintettel a return value-ra. Kb az egész ciklusod f.szság jelenleg, az egyenlőség vagy true vagy false, ami számmal kifejezve 1 vagy 0. Szóval max az első indexig megy a ciklus.

2021. dec. 1. 12:36
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!