Mi az, hogy szegmentacios hiba? Egy egyszerű programozasi feladatnál ütköztem bele és nem tudom hogy és milyen hibát keressék.
Tok kezdő vagyok, a feladat: olyan progit kell írni, ami megszamolja egy pozitiv egész szám valódi osztoit(azaz 1en és önmagán kívül hány db osztoja van).
Lehet hogy hibás a gondolatmenet, de ezt írtam:
#include <stdio.h>
int main (void) {
int szam, oszto=2, eredmeny=0;
printf("Adj egy szamot: ");
scanf("%d",szam);
if (szam<=3)
printf("d%\n",eredmeny);
if (szam>3)
while (oszto <= szam/2){
if (szam%oszto==0)
eredmeny=eredmeny+1;
oszto=oszto+1;
}
printf("%d\n",eredmeny);
return 0;
}
Linuxra írtam, c nyelven. Le tudtam fordítani gépi kódra. El is indul, bekeri a számot, majd kiirja h szegmentacios hiba van. És ennyi...
Valaki vilagositson fel legyszi!
Köszönöm! !!!
Amúgy a szegmentációs hiba azt jelenti, hogy olyan memóriát próbáld írni/olvasni a program, amihez nincs joga (pl az operációs rendszer, vagy más program memóriaterülete), ezért az oprendszer kilőtte a programodat.
Ebben az esetben azért lép fel, mert a scanf a szam változót pointerként értelmezi, és bele próbál túrni a memóriában oda, amennyi az értéke (pl ha 325654270, akkor oda). Ez nagy eséllyel nem fog neki sikerülni (szam-nak nincs kezdőértéke, tehát véletlenszerű, hogy mennyi).
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!