Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Alebo strtol ma aj pointer na endpointer, tak ti oznami kde skoncil.
MM.. 19.03.2014 09:15
MM..
Nevies kde tu mozem mat chybu?? chcel som zistit na kolkej cifre nasiel program nepovolene cislo dal…
Hilfiger 19.03.2014 10:51
Hilfiger
A kvoli citatelnosti sa nepise *(povoleneZnaky+i) ani *(znakyPole+i) ale povoleneZnaky[i] a znakyPol…
MM.. 19.03.2014 14:10
MM..
Ten zdrojak je dost velky a komplikovany to by sa ti nechcelo urcite lustit ale mam problem ze chcem… nový
Hilfiger 19.03.2014 18:01
Hilfiger
char *pChybnyZnak; char *znakyPole = "123nejakeznaky"; cislo=strtol(znakyPole,&pChybnyZnak,n); print… nový
MM.. 19.03.2014 18:18
MM..
jaj uz chapem diky :) poslední
Hilfiger 19.03.2014 18:25
Hilfiger

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);
}
}
}

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

char *pChybnyZnak;
char *znakyPole = "123nejakeznaky";

cislo=strtol(znakyPole,&pChybnyZnak,n);
printf("Chybny znak: %c na pozicii %d\n", *pChybnyZnak, pChybnyZnak-znakyPole);

P.S: a nemas ziaden smernik na smernik. Len do parametra ho vytvoris pomocou & aby mohla ta funkcia ten pChybnyZnak (smernik na char) zmenit.

Zpět do poradny Odpovědět na původní otázku Nahoru