Prevod pole char na int – Mikrokontroléry – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Prevod pole char na int – Mikrokontroléry – Fórum – Programujte.comPrevod pole char na int – Mikrokontroléry – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Jurko
~ Anonymní uživatel
4 příspěvky
7. 12. 2015   #1
-
0
-

Dobry večer :) Prosim o pomoc trocha som sa zasekol a neviekm naist chybu a už do toho pozeram asi tri hodiny: 

int strida(char *str,int vstup)
{
 str += vstup;
  unsigned hodnota = 0;
  while (*str != ',') {
    hodnota = hodnota*10 + *(str++) - '0'; 
  }
  return hodnota;
}

Mam pole charu kde su čuzne dlha unsigned hodnotu ... pole bude naplnene random počtem hodnot ale ich rozsah je od 000 do 255 .... vždy ale v tvare 010,205,101,001,006,205.....

ide o to aby to načitalo vždy čisla do int vstupny parameter je ukazatel na pole a poradi začinajuceho prvku ... odelene su vždy čiarkou.Hadže to random hodnoty :/ a občas aj zaporne :D testoval sem to na  

unsigned a=0;
char txt[32];
char pom[32];
a=strida(pom,5);
b=strida(pom,9);
sprintf(txt,"%d,%d",a,b);

// pom obsahuje napr <X,Y,005,105> .... X a Y su jednoynakove pismenka proste char


Dakujem za každu radu ...

Nahlásit jako SPAM
IP: 89.103.90.–
Reklama
Reklama
Matěj Andrle+1
Grafoman
7. 12. 2015   #2
-
0
-

#1 Jurko
Proč potřebuješ uchovávat char*?  Co takhle ukázat str?

Nahlásit jako SPAM
IP: 31.30.56.–
KIIV+42
God of flame
8. 12. 2015   #3
-
0
-

Minimalne bych se docela obaval te konstrukce:
while (*str != ',')
Protoze druha cast retezce konci znakem > ne ,

Taky nekontrolujes ani \0

Nahlásit jako SPAM
IP: 94.113.92.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Jurko
~ Anonymní uživatel
4 příspěvky
8. 12. 2015   #4
-
0
-

Matej: však jaky je rozdil je medzi pole char a retazec? len v ukončovani /0 .

KIIV:  to sem si nevšimel :/ diky za upozornenie  takže while(*str != ( ',' | '>' ))

naco kontrolovat /0??

Nahlásit jako SPAM
IP: 2001:67c:1220:809::93e5:9...–
KIIV+42
God of flame
8. 12. 2015   #5
-
0
-

#4 Jurko
Mezi polem znaku a ukazatelem na znak neni zadny zasadni rozdil. V C je to temer ekvivalentni. Jeden z rozdilu je, ze pointer se da menit (posouvat), zacatek pole je fixni. U pole jde udelat sizeof(pole)/sizeof(pole[0]) pro ziskani poctu prvku (v c++ to jde i pomoci sablon primo) a u pointeru sizeof vrati jen velikost pointeru.

Takze while(*str != ( ',' | '>' )) urcite ne!!!!   Z  ',' | '>' vznikne uplne jiny znak! Co proste zjistit, jestli je ten znak cislice? 

V C mohou byt retezce libovolne dlouhe (pokud se vejdou do pameti) a je to jen pole bajtu. Jak tedy poznat, kolik je v retezci znaku? Musis urcit jeden znak, ktery bude mit specialni vyznam a tim je prave '\0' (ne '/0'). Muzes pak zpracovavat retezec, a podle ukoncovaciho znaku pak poznas, ze uz dale nesmis. S tim znakem musis taky pocitat i pri kopirovani/spojovani retezcu.

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Jurko
~ Anonymní uživatel
4 příspěvky
8. 12. 2015   #6
-
0
-

Nakonec sem zistil že budu mat stale rovnaky tvar <X,Y,005,105> .. takže spravim radšej dve zvlast funkcie 

while (*str != ',')  a druhu s  while (*str != '>')   a to by mohlo fungovat ? ked mu dam začatek a ukončovani tym znakem a nemusim riesit  '\0'  ??? 

Nahlásit jako SPAM
IP: 2001:67c:1220:809::93e5:9...–
hlucheucho+10
Posthunter
8. 12. 2015   #7
-
0
-

A nebo while (*str != znak)

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Jurko
~ Anonymní uživatel
4 příspěvky
8. 12. 2015   #8
-
0
-

Dekuju Hu :) už to ide :) dobry napad to spravit cez ten znak :)

Nahlásit jako SPAM
IP: 89.103.90.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Char na int — založil vollf82

Int na char — založil filEPina

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý