| | |
| Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
Autor | Správa |
---|
Registrovaný: 06.05.11 Prihlásený: 17.12.16 Príspevky: 97 Témy: 40 | Napísal Butchi: 25.04.2013 21:12 | |
|
Čavte, potrebujem poradiť, mám string napr: dobry,den,ujo,gregor -potrebujem časti oddelené čiarkou rozdeliť do premenných pr1: dobry pr2: den pr3: ujo pr4: gregor -tou funkciou strtok() som vedel rozdeliť iba dva nejak mi to nejde diky za rady
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
Ukáž kód, nech pozrieme, kde je problém
_________________ C#, PHP, ... |
|
Registrovaný: 06.05.11 Prihlásený: 17.12.16 Príspevky: 97 Témy: 40 | Napísal autor témy Butchi: 25.04.2013 22:17 | |
|
no kód som zmazal nevedel som to spraviť až pre 4 premenné, preto sa pýtam či niekto neporadí ako nato
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
Však práve tou funkciou, ktorú si skúšal, len bohvie čo si porobil, keď ti to nefungovalo...
_________________ C#, PHP, ... |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 25.04.2013 22:24 | |
|
Keď spustíš presne kód z dokumentácie http://www.cplusplus.com/reference/cstring/strtok/len zmeníš delimiter na čiarku a máš to rozdelené. Blbosť je pchať to do premenných. Urob si pole reťazcov a jednoducho jednotlivé časti nasyp do neho.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 06.05.11 Prihlásený: 17.12.16 Príspevky: 97 Témy: 40 | Napísal autor témy Butchi: 25.04.2013 22:46 | |
|
ako spraviť to pole reťazcov? stále neviem ako nato
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 25.04.2013 22:55 | |
|
Mohlo by stačiť Kód: char * pole[4]; Do toho kódu zavedieš nejaké počítadlo, ktoré sa bude od nuly každým cyklom zvyšovať o jedna (trebárs int i = 0;) a v cykle potom urobíš len pole[i] = pch; Snáď to bude fungovať - ak nie, tak bude treba použiť ešte aj funkciu malloc a strcpy. Už som nejaký unavený na to, aby som si bol istý Idem spať.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 06.05.11 Prihlásený: 17.12.16 Príspevky: 97 Témy: 40 | Napísal autor témy Butchi: 25.04.2013 23:06 | |
|
int i=0;
char str[] ="aa,bb,cc,dd"; char * pch; char * pole[4]; printf ("Splitting string \"%s\" into tokens:\n",str); pch = strtok (str,","); pole[i]=pch; while (pch != NULL) { i++; printf ("%s\n",pch); pch = strtok (NULL, ","); pole[i]=pch; } printf("%s", pole[0]);
-ten posledný printf - tam som skúšal či to ide, vypíše všetky okrem pole[0]- teda tam sa neuloží nič :/ -a ináč vysvetlí mi niekto prečo pri char * pole[4] musí byť smerník? veľmi im nechápem, ked som skúšal spraviť to pole reťazcov dával som char pole[4] a to mi nešlo, prečo to s tým smerníkom funguje?
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 26.04.2013 7:51 | |
|
Tak ako som sa dočítal, funkcia strtok používa statický buffer pre výsledky. To je problém, preto sa dáta strácajú. Bude preto treba používať strcpy. V tomto prípade, pre zjednodušenie od smerníkov, by to mohlo byť nejako takto: Kód: char str[] ="aa,bb,cc,dd"; int i = 0; char * pch; char pole[4][32]; // **1 printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str,","); strcpy( pole[i], pch ); // **2 while(1) { i++; pch = strtok (NULL, ","); if ( pch == NULL ) // ** 3 break;
strcpy( pole[i], pch ); } for (i = 0; i < 4; i++) printf( "pole[%d]: %s\n", i, pole[i] );
Na riadku **1 si teda vytvorím pole štyroch reťazcov o maximálnej dĺžke 32 znakov. Do nich budem neskôr kopírovať výsledky. Na riadku **2 používam funkciu strcpy, ktorá fyzicky skopíruje reťazec na iné miesto v pamäti - teda do môjho pola. Na riadku **3 kontrolujem NULL ešte pred kopírovaním, lebo nemôžem funkcií strcpy predať NULL ako parameter. Takto to teda funguje, ale si obmedzený len na max 32 znakov dlhé tokeny. To by sa potom riešilo cez dynamickú alokáciu. Prečítaj si toto, určite ti to trochu pomôže pochopenie-smernikov-v-jazyku-c-vt134003.html
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 14.03.11 Prihlásený: 02.08.23 Príspevky: 814 Témy: 23 Bydlisko: Bratislava | |
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 26.04.2013 9:48 | |
|
Si si istý? getline je C++ a cez fscanf to urobí len ťažko (rovnako tak cez sscanf) A tie tvoje hnusné veci dole sú síce pekné, ale nič-nevraviace
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 14.03.11 Prihlásený: 02.08.23 Príspevky: 814 Témy: 23 Bydlisko: Bratislava |
Je lepšie mať jeden dobrý parser nezávislý od zdroja "vety". Teda, podľa mňa. Ja tie vety dostávam z mikrofónu. 8-)
|
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 29.04.2013 11:41 | |
|
Je lepšie v prvom rade svojmu parseru aspoň trochu rozumieť
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
| Stránka: 1 z 1
| [ Príspevkov: 13 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| pole, rozdelenie textu.. v PHP, ASP | 8 | 624 | 30.01.2009 16:56 newboy1 | | Rozdelenie textu po urcitom pocte znakov v PHP, ASP | 1 | 385 | 02.12.2008 17:29 stenley | | Nejaky sikovny software na rozdelenie textu v Ostatné programy | 0 | 326 | 15.11.2016 6:52 ferino5 | | Zmena textu a zanechani pozice v textu v PHP, ASP | 4 | 743 | 01.08.2009 21:26 Tominator | | prenasanie premennych v PHP, ASP | 25 | 815 | 17.10.2012 22:25 Lier | | Načítavanie premenných v PHP, ASP | 7 | 591 | 17.09.2007 15:59 pitrik1 | | Chybne spracovanie premennych v PHP, ASP | 2 | 319 | 22.08.2012 9:56 Wor3d | | Java - zoznam premennych v Assembler, C, C++, Pascal, Java | 4 | 629 | 29.12.2008 17:12 1231dodo | | JS viac premennych v JavaScript, VBScript, Ajax | 1 | 629 | 07.08.2008 19:08 neutronmind | | Obor premenných v Javascripte???? v JavaScript, VBScript, Ajax | 2 | 718 | 18.12.2009 0:07 camo | | Prenos premennych medzi funkciami v PHP, ASP | 6 | 528 | 27.08.2012 4:26 Ďuri | | Matlab script inicializácia premenných v Assembler, C, C++, Pascal, Java | 0 | 382 | 16.05.2017 12:10 beastiq | | predavanie premennych medzi strankami v PHP, ASP | 8 | 621 | 26.02.2011 14:20 1daemon1 | | Porovnanie dvoch premennych typu VARCHAR v PHP, ASP | 11 | 516 | 02.06.2014 12:37 DeiForm | | Zapisat 25.01.2008 do 3 premennych v PHP, ASP | 8 | 380 | 25.01.2008 22:24 Matho | | porovnavanie 3 premennych a vypis min a max v Assembler, C, C++, Pascal, Java | 9 | 1683 | 30.07.2008 23:58 ado21 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|