Dobry den,
mam za ukol napsat program, co precte jednu radku a jako vystup vypise tu radku a pod kazdym znakem jeho cetnost.
Zkousel jsem nacitat retezec pomoci fgets(s, 1024, stdin), ale kdyz ho pote zacnu prochazet pomoci for cyklu, zacne mi to vracet nesmyslne hodnoty, treba, ze na pozici s[103], je 'a', pritom do vstupu napisi pouze 5 pismen...nesla by nejak flexibilne upravovat delka retezce podle delky vstupu? diky za odpovedi
Fórum › C / C++
Problem s retezci
To liborb :
liborb napsal:
Tak řetězec většinou končí nulovým znakem (0 ne '0'). Nehledě na to, že si ten svůj buffer můžeš před použitím vynulovat.
diky, vynulovani pomohlo, ted uz to i spocitam, a mam pred sebou posledni problem, kdyz je cetnost vetsi nez 10, tak bych potreboval, aby se to napsalo pod sebe.. napr.
vstup:
aaaaaaaaaaaa
vystup:
aaaaaaaaaaaa
12345678911
01
liborb napsal:
Podmínka, zbytek po dělení (%) a dělení. Víc potřebovat nebudeš. Buď přímo vypisovat nebo předpřipravit do bufferu. A není to samozřejmě jediná možnost.
s bufferem to funguje fajn, az na jednu drobnost..kdyz zadam napr.
des = pocet%10;
printf("%d",des);
int pom = pocet/10;
desitky[o]= '1' ;
tak mi to do bufferu normalne zapise 1, a vypisuje ji to od 10 dal, ale kdyz chci udelat
char pomo[1];
sprintf(pomo,"%d", pom);
desitky[o]= pomo[0] ;
tak to nevypise nic, ale ani to nehlasi chybu..jsem trochu zmatenej, v jave staci String pomo = ""+pom;, ale nic takovyho mi zde nejde a tohle je prej nelepsi na pretypovani..
krom toho ze sis pripravil pole znaku ktere ma misto akorat na jedinej znak.. a to bude pravdepodobne jeste ten ukoncovaci..
pomo si musis hodit na minimalne 12 mist... 10 pro cislice, jednu pro jistotu pro znamenko - a nakonec ukoncovaci znak retezce \0 ... to co si udelal nefunguje mozna proto, ze si to hned prepisujes nejakou promennou umistenou hned za tim jednim znakem
jiste ze pomo = ""+pom; nejde... jsme v C, a C bylo vytvoreno kvuli psani prenositelnych operacnich systemu.. tj. dovoli programatorovi udelat naprosto cokoliv co se tyce prace s pameti a tak
KIIV napsal:
krom toho ze sis pripravil pole znaku ktere ma misto akorat na jedinej znak.. a to bude pravdepodobne jeste ten ukoncovaci..
pomo si musis hodit na minimalne 12 mist... 10 pro cislice, jednu pro jistotu pro znamenko - a nakonec ukoncovaci znak retezce
heh, tak sem za tu 1 v pomo dopsal tu 12 a hned to fungovalo, diky moc
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Vyhledávání v řetězci — založil TheSun
Mazani v retezci — založil pavel
Prace s retezci — založil marc_ramin
Hledání v řetězci — založil Dr. ERROR
Nahrazování v řetězci — založil BlackHole
Moderátoři diskuze