Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 13 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.11
Prihlásený: 17.12.16
Príspevky: 97
Témy: 40
Príspevok NapísalOffline : 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 :)


Offline

Skúsený užívateľ
Skúsený užívateľ
C - rozdelenie textu do premenných

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66
Bydlisko: Žilina
Príspevok NapísalOffline : 25.04.2013 21:15

Ukáž kód, nech pozrieme, kde je problém ;)







_________________
C#, PHP, ...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.11
Prihlásený: 17.12.16
Príspevky: 97
Témy: 40
Príspevok Napísal autor témyOffline : 25.04.2013 22:17

no kód som zmazal :D nevedel som to spraviť až pre 4 premenné, preto sa pýtam či niekto neporadí ako nato


Offline

Skúsený užívateľ
Skúsený užívateľ
C - rozdelenie textu do premenných

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14572
Témy: 66
Bydlisko: Žilina
Príspevok NapísalOffline : 25.04.2013 22:20

Však práve tou funkciou, ktorú si skúšal, len bohvie čo si porobil, keď ti to nefungovalo...







_________________
C#, PHP, ...
Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 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!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.11
Prihlásený: 17.12.16
Príspevky: 97
Témy: 40
Príspevok Napísal autor témyOffline : 25.04.2013 22:46

ako spraviť to pole reťazcov? stále neviem ako nato


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 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ý :D Idem spať.







_________________
Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám!
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 06.05.11
Prihlásený: 17.12.16
Príspevky: 97
Témy: 40
Príspevok Napísal autor témyOffline : 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?


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 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!
Offline

Užívateľ
Užívateľ
C - rozdelenie textu do premenných

Registrovaný: 14.03.11
Prihlásený: 02.08.23
Príspevky: 814
Témy: 23
Bydlisko: Bratislava
Príspevok NapísalOffline : 26.04.2013 9:20

toto je identická téma

http://www.pcforum.sk/formatovanie-vstupu-zo-suboru-vt150284.html


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 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!
Offline

Užívateľ
Užívateľ
C - rozdelenie textu do premenných

Registrovaný: 14.03.11
Prihlásený: 02.08.23
Príspevky: 814
Témy: 23
Bydlisko: Bratislava
Príspevok NapísalOffline : 29.04.2013 11:06

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


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 17.07.11
Prihlásený: 29.12.20
Príspevky: 1516
Témy: 3
Príspevok NapísalOffline : 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!
Odpovedať na tému [ Príspevkov: 13 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. pole, rozdelenie textu..

v PHP, ASP

8

624

30.01.2009 16:56

newboy1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Rozdelenie textu po urcitom pocte znakov

v PHP, ASP

1

385

02.12.2008 17:29

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nejaky sikovny software na rozdelenie textu

v Ostatné programy

0

326

15.11.2016 6:52

ferino5 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zmena textu a zanechani pozice v textu

v PHP, ASP

4

743

01.08.2009 21:26

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. prenasanie premennych

v PHP, ASP

25

815

17.10.2012 22:25

Lier Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Načítavanie premenných

v PHP, ASP

7

591

17.09.2007 15:59

pitrik1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chybne spracovanie premennych

v PHP, ASP

2

319

22.08.2012 9:56

Wor3d Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java - zoznam premennych

v Assembler, C, C++, Pascal, Java

4

629

29.12.2008 17:12

1231dodo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. JS viac premennych

v JavaScript, VBScript, Ajax

1

629

07.08.2008 19:08

neutronmind Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Obor premenných v Javascripte????

v JavaScript, VBScript, Ajax

2

718

18.12.2009 0:07

camo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Prenos premennych medzi funkciami

v PHP, ASP

6

528

27.08.2012 4:26

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Matlab script inicializácia premenných

v Assembler, C, C++, Pascal, Java

0

382

16.05.2017 12:10

beastiq Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. predavanie premennych medzi strankami

v PHP, ASP

8

621

26.02.2011 14:20

1daemon1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Porovnanie dvoch premennych typu VARCHAR

v PHP, ASP

11

516

02.06.2014 12:37

DeiForm Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Zapisat 25.01.2008 do 3 premennych

v PHP, ASP

8

380

25.01.2008 22:24

Matho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. porovnavanie 3 premennych a vypis min a max

v Assembler, C, C++, Pascal, Java

9

1683

30.07.2008 23:58

ado21 Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra