Autorem citovaného textu je ghh
Přejít na původní příspěvek
Oznámení
Sbalit
Aktuálně žádná oznámení.
AmigaE
Sbalit
X
-
O: AmigaE
-
O: AmigaE
Pred tim jsem znal jenom Arexx a jeho funkci parse, tak jsem myslel ze je to bezna vec. Ted jsem nasel ten priklad co dela neco podobnyho, ale nevim jestli "se to tak dela", nebo existuje neco jednodussiho
Pocty slov i oddelovace jsou predem znamy (MAC adresy v MUI listu) a nebyl by problem je zmenit. Chci tedy vzit polozku v listu, ktera obsahuje text se jmenem a mac adresou (text je vcelku, slova oddelena dvojteckou). Tenhle text chci rozkouskovat na jednotlivy promenny abych je moh pouzit jinde (vyplnit do poli v editacnim okne).
DJM: Tvuj priklad je jasny a mam rad hodne komentaru
Vložit komentář:
-
O: AmigaE
Takto nejako by som to robil ja. Jednoduche a pre dany pripad funkcne...
Code:#include <stdio.h> int p,c; char *input="Standa:Pepik:Ruda:Milan"; char *output[4]; [COLOR=#008000]// maximalne 4 slova,pre viac slov staci zmenit 4 za pozadovany pocet[/COLOR] void main() { [COLOR=#008000]//init na zaciatku a zapise sa rovno adresa prveho slova[/COLOR] p=0; c=0; output[c++]=&input[p]; [COLOR=#008000]//Pokial neni koniec vstupneho retazca (0), kontroluje sa ci nebola ":". //Ak bola, prepise sa na 0 (ukoncenie noveho retazca) a do pola output //sa zapise adresa zaciatku slova[/COLOR] while(input[p]!=0) { if(input[p-1]==':') { input[p-1]=0; output[c++]=&input[p]; } p++; } [COLOR=#008000]//Vysledne adresy kazdeho slova sa nachadzaju v poli output[]. //Pre kontrolu si ich vypiseme.[/COLOR] for(p=0;p<4;p++) { printf("%s\n",output[p]); } }
Vložit komentář:
-
O: AmigaE
Ja by som to robil trochu inak. Kontroloval by som znak po znaku, az kym by som nenarazil na ":" a zaroven si to zapisoval do nejakeho pola stringov. Ale ako pise aj Exie, neviem co s tym presne chces, kolko by bolo maximalne slov (ci len 4, alebo viac), atd..
Vložit komentář:
-
O: AmigaE
Vazne je tohle to co potrebujes?
Ja jsem v C dlouho nic neprogramoval, ale pokud to chapu dobre tak rozdelit string pomoci printf znamena, ze ho rovnou vypisujes na standardni vystup, coz je pro dalsi zpracovani naprd. Pokud to chces jen vypsat, tak mas hotovo, ale pokud to budes nejak dal zpracovavat, tak tohle moc nepomuze...
Vložit komentář:
-
O: AmigaE
Aha me bylo divny ze jsem nikde nenasel nic o SplitStringTakze takhle:
Code:#include<stdio.h> main() { char* input ="Standa:Pepik:Ruda:Milan"; char *output, *temp; char * field; char sep = ':'; field = input; for(temp = field; *temp; ++temp){ if (*temp == sep){ printf("%.*s\n", temp-field, field); field = temp+1; } } printf("%.*s\n", temp-field, field); }
Vložit komentář:
-
O: AmigaE
Ta funkcia SplitString() je tam zbytocne, ked sa v nej nic nerobi, len as vracia str...
Vložit komentář:
-
O: AmigaE
Nasel jsem tohle a funguje mi to, ale je to v C. Tohle je neco co jsi mel na mysli ?
Code:#include<stdio.h> char* SplitString(char* str, char sep) { return str; } main() { char* input ="Standa:Pepik:Ruda:Milan"; char *output, *temp; char * field; char sep = ':'; output = SplitString(input, sep); field = output; for(temp = field; *temp; ++temp){ if (*temp == sep){ printf("%.*s\n", temp-field, field); field = temp+1; } } printf("%.*s\n", temp-field, field); }
Vložit komentář:
-
O: AmigaE
V C to jde udelat pomoci printf a odpovidajiciho vyrazu, ktery sice neni regularni, ale podoba se tomu.
Vložit komentář:
-
O: AmigaE
Autorem citovaného textu je ghh Přejít na původní příspěvekNemůžu najít jak se dělá v E něco jako je příkaz parse v arexxu. Příklad:
Neví někdo jak se to dělá v E nebo i v jinym jazyce, E se docela podobá céčku.
V Ccku by jsi mohl pouzit strtok() pripadne pokud by jsi mel k dispozici strsep().
Ale muzu se samozrejme mylit...
Vložit komentář:
-
AmigaE
Nemůžu najít jak se dělá v E něco jako je příkaz parse v arexxu. Příklad:
Code:/* parse ala arexx */ mujtext = "Standa:Pepik:Ruda:Milan" parse var mujtext jmeno1':'jmeno2':'jmeno3':'jmeno4 say jmeno1 say jmeno2 say jmeno3 say jmeno4
Neví někdo jak se to dělá v E nebo i v jinym jazyce, E se docela podobá céčku.Tagy: Žádné
Vložit komentář: