Portál AbcLinuxu, 10. listopadu 2025 16:48
.....samozrejme sem o enum hledal info, ale ani to nmepomohlo
jinak vystup:
3 [main] duc 6916 exception::handle: Exception: STATUS_ACCESS_VIOLATION
1122 [main] duc 6916 open_stackdumpfile: Dumping stack trace to duc.exe.stackdump
RUN FAILED (exit value 35 584, total time: 2s)
Predem moc diky za rady
Řešení dotazu:
void ctiTyp(typPracovnika typ) {
int volba = 0;
printf("Zadej typ pracovnka (1 = Administrativni, 2 -Vykonny): \n");
scanf("%d", volba);
switch (volba) {
/* tady je nakej problem
*/
case 1:
typ = ADM;
break;
case 2:
typ = EXEC;
break;
default:
printf("spatna volba, pracovnik bude vytvoren jako aministrativni\n");
break;
}
}
Rekl bych, ze to je tim, ze se snazis zmenit hodnotu promenne typ, ktera je vstupnim argumentem funkce. Navrhuji vratit hodnotu pomoci return, nebo pres ukazatel. Tomas
?
Diky za radu
void funkce (int* cislo) { ... }
int a = 3;
funkce (&a); // tato funkce muze manipulovat s hodnotou a
Pripadne takto:
int funkce (int cislo) { ... }
int a = 3;
a = funkce (a);
Jinak, takhle bych to zrovna nedelal. To zase neni problematika daneho jazyka, ale navrhu programu - napriklad Dokonaly kod od Mcconella.
Zde urcite neni spravne nacitat jmeno a prijmeni uvnitr funkce pro vytvoreni pracovnika.
/* vytvoreni pracovnika */
pracovnik vytvorPracovnika(int id) {
pracovnik pomocnyPracovnik;
pomocnyPracovnik.id = id;
/* volani metod, ktere nactou jmeno a prijmeni a typ*/
ctiJmeno(pomocnyPracovnik.jmeno);
ctiPrijmeni(pomocnyPracovnik.prijmeni);
pomocnyPracovnik.typ = ctiTyp();
return pomocnyPracovnik;
}
int volba = 0;
...
scanf("%d", volba);
Ak formátovací reťazec scanf obsahuje %d, tak ako argument sa očakáva pointer na int a nie int. Teda správne má byť:
scanf("%d", &volba);
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.