[ 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 | 40
NapísalOffline : 25.04.2013 21:12 | C - rozdelenie textu do premenných

Č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 | 66
Bydlisko: Žilina
NapísalOffline : 25.04.2013 21:15 | C - rozdelenie textu do premenných

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 | 40
Napísal autor témyOffline : 25.04.2013 22:17 | C - rozdelenie textu do premenných

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 | 66
Bydlisko: Žilina
NapísalOffline : 25.04.2013 22:20 | C - rozdelenie textu do premenných

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 | 3
NapísalOffline : 25.04.2013 22:24 | C - rozdelenie textu do premenných

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 | 40
Napísal autor témyOffline : 25.04.2013 22:46 | C - rozdelenie textu do premenných

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 | 3
NapísalOffline : 25.04.2013 22:55 | C - rozdelenie textu do premenných

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 | 40
Napísal autor témyOffline : 25.04.2013 23:06 | C - rozdelenie textu do premenných

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 | 3
NapísalOffline : 26.04.2013 7:51 | C - rozdelenie textu do premenných

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ý: 04.07.24
Príspevky: 815
Témy: 23 | 23
Bydlisko: Bratislava
NapísalOffline : 26.04.2013 9:20 | C - rozdelenie textu do premenných

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 | 3
NapísalOffline : 26.04.2013 9:48 | C - rozdelenie textu do premenných

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ý: 04.07.24
Príspevky: 815
Témy: 23 | 23
Bydlisko: Bratislava
NapísalOffline : 29.04.2013 11:06 | C - rozdelenie textu do premenných

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 | 3
NapísalOffline : 29.04.2013 11:41 | C - rozdelenie textu do premenných

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!
 [ Príspevkov: 13 ] 


C - rozdelenie textu do premenných



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

688

30.01.2009 16:56

newboy1

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

Nejaky sikovny software na rozdelenie textu

v Ostatné programy

0

366

15.11.2016 6:52

ferino5

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

Rozdelenie textu po urcitom pocte znakov

v PHP, ASP

1

425

02.12.2008 17:29

stenley

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

Zmena textu a zanechani pozice v textu

v PHP, ASP

4

872

01.08.2009 21:26

Tominator

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

prenasanie premennych

v PHP, ASP

25

849

17.10.2012 22:25

Lier

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

Načítavanie premenných

v PHP, ASP

7

644

17.09.2007 15:59

pitrik1

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

Chybne spracovanie premennych

v PHP, ASP

2

363

22.08.2012 9:56

Wor3d

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

Java - zoznam premennych

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

4

673

29.12.2008 17:12

1231dodo

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

JS viac premennych

v JavaScript, VBScript, Ajax

1

670

07.08.2008 19:08

neutronmind

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

Obor premenných v Javascripte????

v JavaScript, VBScript, Ajax

2

761

18.12.2009 0:07

camo

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

Prenos premennych medzi funkciami

v PHP, ASP

6

565

27.08.2012 4:26

Ďuri

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

433

16.05.2017 12:10

beastiq

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

predavanie premennych medzi strankami

v PHP, ASP

8

652

26.02.2011 14:20

1daemon1

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

Porovnanie dvoch premennych typu VARCHAR

v PHP, ASP

11

577

02.06.2014 12:37

DeiForm

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

Zapisat 25.01.2008 do 3 premennych

v PHP, ASP

8

423

25.01.2008 22:24

Matho

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

1730

30.07.2008 23:58

ado21



© 2005 - 2025 PCforum, edited by JanoF