C nyelvben szeretnék olyan függvényt írni, ami 2 stringet összehasonlít és felcserél, ha teljesül egy feltétel. A string tartalmaz nevet és magasságot, amire két pointer mutat. Hogyan lehet megoldani?
Erre gondoltam:
char temp;
void swap (const osztaly* a, const osztaly* b)
{
if (a->magassag < b->magassag)
{
strcpy(temp, osztaly* b);
strcpy(osztaly* a, osztaly* b);
strcpy(osztaly* b, osztaly* temp);
}
}
Hol vannak itt stringek?
Mik ezek a lokális változók, amik elfedik a paramétereket?
Honnan jön a temp változó?
Miért félrevezető a függvény neve és működése?
Mit jelent egy osztály magassága?
Ennek az egésznek az égvilágon semmi értelme.
Szerintem Te nagyon-nagyon kevered a (valahol összeolvasott) fogalmakat.
Ezt kéne inkább tisztába tenni.
c-ben nincs osztály, csak struct. Gondolom ebben van egy szám és egy string.
a temp változónak elég nagynak kell lennie, hogy beleférjen tömbnek kell deklarálni elég nagy mérettel, vagy dinamikusan a string hossza szerint.
strcpy 2 stringet vár, te meg két structra mutató pointert adsz neki.
És a felcserélés sem jó, teljesen rossz a másolás sorrendje (még ha amúgy valóban sztringekről lenne is szó.)
Rajzolj le három kört, írd rájuk, hogy a,b,temp, és tegyél rájuk két mogyorót. Aztán cseréld fel őket józan paraszt ésszel, máris világos lesz a dolog.
Nagyon alapvető hiányosságok vannak itt, még akkor is, ha csak hobbi szinten űzöd a témát. És ezt nem gonoszságból írom.
És miért van a függvényhívásban paraméter típus?
...
..És ha a swap két paramétere const értékre mutató ptr, akkor hogy fogod felcserélni a tartalmakat? (..A címeket inkább.)
Olyan ez a kód, mint egy bűntény helyszíne, csak szörnyűbb.
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!