Automatická deklarace charů – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Automatická deklarace charů – C / C++ – Fórum – Programujte.comAutomatická deklarace charů – C / C++ – Fórum – Programujte.com

 

Sprinter
~ Anonymní uživatel
102 příspěvků
24. 12. 2012   #1
-
0
-

Ahoj,

začínám programovat v C a tak prosím mějte se mnou trpělivost :-)

Problém který řeším je následující - mám nějaké znaky, které zadávám na vstupu do programu (pomocí gets()), např.

"afafaf afafaf afafaf afaf" Mezera má oddělovat jednotlivé sektory, ovšem počet těchto sektorů není předem znám.

Jde mi o to, že pro další psaní programu potřebuji, aby každý tento sektor byl uložen např. pod char sec1, char sec2 apod. Napadá mě jen ruční deklarace např. 10 takových charů a doufat, že vstup nebude delší... 

Nahlásit jako SPAM
IP: 92.62.224.–
crazy
~ Moderátor
+10
Grafoman
24. 12. 2012   #2
-
0
-

#1 Sprinter
udělej si pole charů...

např. pole pro 256 znaků se deklaruje takto:

char buffer[256];

pokud nevíš, jak velké budeš pole potřebovat, budeš muset použít dynamickou alokaci, ke které ti poslouží fce malloc/calloc

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Sprinter
~ Anonymní uživatel
102 příspěvků
24. 12. 2012   #3
-
0
-

#2 crazy
Tohle chápu, nejprve všechny znaky načtu do charu, který alokuji na velikost vstupních znaků (strlen). Ale já teď potřebuju rozdělit ty "sektory" tak, aby každý spadal právě pod jeden char, např:

char sec1 = afafaf

char sec2 = agfaga

char sec3 = aggg

Problém je, že nevím kolik těchto charů budu potřebovat... 

Nahlásit jako SPAM
IP: 92.62.224.–
crazy
~ Moderátor
+10
Grafoman
24. 12. 2012   #4
-
0
-

#3 Sprinter
dynamicky alokované pole řetězců? char *sektory [];

a nebo ti může pomoci fce strtok

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Sprinter
~ Anonymní uživatel
102 příspěvků
24. 12. 2012   #5
-
0
-

Strtok je přesně to co jsem hledal. Akorát mám ještě problém s následujícím

for(i = 0; i <= 3; i++)
	{
		token = strtok(input, " ");
		printf("TOKEN: %s\n", token);
	}

Ve výše uvedeném kódu mi bude vstup zadaný např. "abcd efgh abcd" vypisovat pouze 3x "abcd" (což je jasné). Jak udělám, aby se mi token vždy posunul na další pozici a tak ukládal následující text?

Nahlásit jako SPAM
IP: 92.62.224.–
crazy
~ Moderátor
+10
Grafoman
24. 12. 2012   #6
-
0
-
Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Sprinter
~ Anonymní uživatel
102 příspěvků
24. 12. 2012   #7
-
0
-

#6 crazy
Ok, děkuji. Problém vyřešen.

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

Podobná vlákna

Konstruktor z charu — založil Spectrik

Porovnání charů — založil Ivo

Konstanta charu... — založil Maty

Ukazatele na pole charů — založil garamond

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ý