Prazdny radek a funkce pro rozdeleni retezce do mensich retezcu podle znaku – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Prazdny radek a funkce pro rozdeleni retezce do mensich retezcu podle znaku – C / C++ – Fórum – Programujte.comPrazdny radek a funkce pro rozdeleni retezce do mensich retezcu podle znaku – C / C++ – Fórum – Programujte.com

 

Olda
~ Anonymní uživatel
17 příspěvků
15. 11. 2012   #1
-
0
-

Ahoj, nejspis trivialni otazka, ale jak ulozim do pole[i][j] prazdny radek? Kdyz napisu pole[i][j]="" tak to nebere, zkousel jsem pole[i]="" to taky ne. Pole je do funkce vlozeno jako pole[cislo][cislo].Dekuji

A dale si zkousim priklad(ktery souvisi s prvni otazkou), kdy je potreba vytvorit funkci, ktera vypada takto:

int parse(char vstupPole[], char stop, char vystupPole[255][255]).ta funkce nacte retezec vstupPole a pak ho prekopiruje do  vystupPole tak, ze kopiruje retezec do vystupPole,dokud nenarazi na znak stop. Kdyz na nej narazi, skoci se na dalsi radek vystupPole a znova se kopiruje, dokud se nenarazi na znak stop a tak se jede az do konce retezce ve vstupPole. Pokud je znak stop na zacatku, konci, nebo je znak stop po znaku stop, tak se vypise do vystupPole prazdny retezec(viz prvni otazka). Program uz v podstate mam, ale spis me zajima vase reseni. Ja jsem to resil pomoci cyklu a v nem jsem za pomoci podminek proste kopiroval znak po znaku a pripada mi to jako "stupidni" reseni. Resili byste to nejak vhodneji? Za pomoci nejakych funkci ze <string.h> ci jinak?

Dekuji a preji hezky den

Nahlásit jako SPAM
IP: 85.135.10.–
Olda
~ Anonymní uživatel
17 příspěvků
15. 11. 2012   #2
-
0
-

#1 Olda
priklad: *aa*aa*  ->  ""

                            aa

Nahlásit jako SPAM
IP: 85.135.10.–
Olda
~ Anonymní uživatel
17 příspěvků
15. 11. 2012   #3
-
0
-

#2 Olda
Pardon nechte jsem to odeslal melo to vypadat takto:

priklad: *aa*aa*  ->vystup:      ""

                                           aa

                                           aa

                                           ""

Tak se jeste jednou omlouvam a hezky den.

Nahlásit jako SPAM
IP: 85.135.10.–
reciproke0
Návštěvník
15. 11. 2012   #4
-
0
-

#3 Olda
pokud to dobře chápu, máš pole charů tak do prvních dvou uložíš uvozovky.

pole[i][0] = '"';
pole[i][1] = '"';

Co se týká kopírování, je to dle mého názoru jen možnost jiného zápisu, kopírování bude probíhat úplně stejně.

Nahlásit jako SPAM
IP: 82.208.4.–
Olda
~ Anonymní uživatel
17 příspěvků
15. 11. 2012   #5
-
0
-

#4 reciproke
No to je podle me bohuzel spatne, jelikoz to nevypise prazdny radek ale znaky ""

Nahlásit jako SPAM
IP: 85.135.10.–
vitamin+8
Grafoman
15. 11. 2012   #6
-
0
-

#5 Olda
prazdny riadok mozes spravyt vlozenim na prve miesto hodnotu 0:

pole[i][0] = '\0';
//alebo:
pole[i][0] = 0;
Nahlásit jako SPAM
IP: 95.105.157.–
obfuscate: "The cruel god Malloc will strike you down. "
ZMeson: "That's the C god. C++ has a new god. "
Radek Chalupa
~ Redaktor
+1
Super člen
15. 11. 2012   #7
-
0
-

#1 Olda
Na rozdělení textu podle nějakého separátoru je i čistém C funkce strtok, popř. wcstok, podívej se do nápovědy kde najdeš i příklad použití.

Pokud jsi náhodou myslel prázdný řádek doslova, tak tam nakopíruj "\n", popř. "\r\n", což je znak pro odřádkování v textu resp. textovém souboru.

Radek Chalupa
- vývoj software na zakázku
- školení programování (C/C++, WinAPI, ATL, COM, ActiveX, C#, NET Framework, MFC)
http://www.radekchalupa.cz

Nahlásit jako SPAM
IP: 213.220.211.–
Hanule
~ Anonymní uživatel
37 příspěvků
22. 11. 2012   #8
-
0
-

#1 Olda
Ahoj, já mám podobný úkol. A není mi jasné, proč je tam dvourozměrné pole vystupPole[][].

Nahlásit jako SPAM
IP: 147.251.229.–
Hanule
~ Anonymní uživatel
37 příspěvků
23. 11. 2012   #9
-
0
-

Tak jsem se snažila to nějak splácat dohromady, ale moc se mi nedaří...Vytvořila jsem si pozici, na které se bude delimiter nacházet, delku retezce, který se má rozdělit a celkový počet delimiterů v řetězci. A teď mám naplnovat dvourozměrné pole těmi rozdělenými řetězci. Takže jestli jsem to dobe pochopila a "naplánovala", tak budu kopírovat znaky do výstupního Pole, a až narazí ten cyklus na delimiter, tak odřádkuje na další řádek.

A tím by se mi mělo vyplnit pole  a poté mi vrátí hodnotu, kolik "řádků" jsem zaplnila.

Teď mi ovšem nastává problém jak to udělat.

char p;
   for (int i=0;i<delka;i++)
   {
       for(int j=0;i<delka;j++)
       {
          p=cil[i];
          //vkladej znaky do vals
          vals[i][j]=p;
          printf("%c",vals);

          //kdyz bude p=delimiter, odskoc na dalsi radek
          if(cil[i]==delimiter) j++;
       }
   }

toto mi nefunguje...a nevím co s tím...zaprvé ten cyklus nekoncí, i když je delka=8; a pak to vypisuje uplně špatný znak pořád dokola.

Nahlásit jako SPAM
IP: 91.219.242.–
Hanule
~ Anonymní uživatel
37 příspěvků
23. 11. 2012   #10
-
0
-

Pardon, to mělo být do jiného vlákna, ale nevím jak příspěvek smazat...

Nahlásit jako SPAM
IP: 91.219.242.–
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, 28 hostů

Moderátoři diskuze

 

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