
C - strtol praca z retazcami
Dobre ranko neviete mi poradit s fukciou strtol? Viem ze meni retazec cisiel na premennu typu int a aj ze z ktorejkolvek sustavy do desiatkovej ale ako zistim ked mam napriklad retazec cisiel 100113 a dam sustavu dvojkovu cize n=2 program ma upozorni a vypise do premennej chybnyZnak cislo 3 a napise cislo co sa mu podarilo premenit. Ako ale zistim na ktorom mieste chybne cislo retazca bolo a aka cast cisla bola vyuzita na premenu? A ak chybne cislo v retazci nieje ako zapisem iba cislo co to naslo bez vypisania chybneho cisla ked neexistuje? Co mam dat do if?
Alebo strtol ma aj pointer na endpointer, tak ti oznami kde skoncil.
Nevies kde tu mozem mat chybu?? chcel som zistit na kolkej cifre nasiel program nepovolene cislo dalej ake cislo tym padom premiena.
cislo=strtol(*znakyPole,&chybnyZnak,n);
printf("%d\n",cislo);
if(chybnyZnak[0]!='\0')
{
for(i=0;i<pocetPrvkov;++i)
{
*(povoleneZnaky+i)=*(znakyPole+i);
if(*(znakyPole+i)==chybnyZnak)
{
printf("V cisle %s bol na pozicii %d zisteny nepovoleny znak:%c",*znakyPole,i,*chybnyZnak);
printf("Na prevod bola vyuzita len cast cisla %s. Ziskane cislo:%d",povoleneZnaky,cislo);
}
}
}
A kvoli citatelnosti sa nepise
*(povoleneZnaky+i) ani *(znakyPole+i)
ale
povoleneZnaky[i] a znakyPole[i]
Ten zdrojak je dost velky a komplikovany to by sa ti nechcelo urcite lustit ale mam problem ze chcem vediet na akom mieste v retazci sa ten zly znak nachadza skusal som to cez strchr ale ta chce smernik toho retazca ale ja ho mam ako smernik na smernik lebo to mam vo funkcii tak vobec neviem ako by som tu polohu zanku dokazal zistit
P.S: a nemas ziaden smernik na smernik. Len do parametra ho vytvoris pomocou & aby mohla ta funkcia ten pChybnyZnak (smernik na char) zmenit.
jaj uz chapem diky :)