Spocitavanie znakov v stringu (lazyk C)

Programovacie jazyky, rady, poradňa...
BRN32
Novice
Novice
Používateľov profilový obrázok
Príspevky: 8
Registrovaný: 19 apr 2012, 0:21

Spocitavanie znakov v stringu (lazyk C)

Príspevok od používateľa BRN32 »

Ahojte. Naozaj sa snazim, ale uz dlho stojim na jednom mieste. Potrebujem nasledovnu vec:

Kód: Vybrať všetko

int main()
{
	char text[] = "skusobne slova";

	printf("%i", sizeof(text));

	getchar();
	return(0);
}
Vysledok je pocet znakov stringu (14) plus jeden nulty znak na konci, cize 15. Takto si to predstavujem, no ako spravit, aby mi to takto spocitavalo znaky, ked ich chcem zadavat z konzoly? Nasledovny kod je nefunkcny a sluzi ako predstava, ze o co mi ide:

Kód: Vybrať všetko

int main()
{
	char text[];

	scanf("%s", text);

	printf("%i", sizeof(text));

	getchar();
	return(0);
}
Ak to upravim tak, aby program kompilator zobral (nasledovny kod):

Kód: Vybrať všetko

int main()

{

	char text[32];
	
	scanf("%s", text);
	char * pocet = text;

	printf("%i", sizeof(pocet));

	getchar();
	getchar();
	return(0);
}
Tak je zasa vysledok vzdy cislo 4 nech zadam cokolvek.
Dakujem za rady.
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Spocitavanie znakov v stringu (lazyk C)

Príspevok od používateľa BX »

#include <string.h> a funkcia strlen()
Prípadne nie je ťažké si takúto funkciu napísať, keby si vedel, čo je to cyklus :)
johny3212
Star
Star
Používateľov profilový obrázok
Príspevky: 532
Registrovaný: 17 feb 2008, 19:56
Bydlisko: Terchova
Kontaktovať používateľa:

Re: Spocitavanie znakov v stringu (lazyk C)

Príspevok od používateľa johny3212 »

Tieto funkcie vracaju dlzku po ukoncovaci znak. To je bobre. Problem je, ze nemozes pouzit scanf, lebo ten berie do uvahy iba jeden retazec z konzoli myslim :). Pouzi getline.
BRN32
Novice
Novice
Používateľov profilový obrázok
Príspevky: 8
Registrovaný: 19 apr 2012, 0:21

Re: Spocitavanie znakov v stringu (lazyk C)

Príspevok od používateľa BRN32 »

BX napísal:#include <string.h> a funkcia strlen()
Prípadne nie je ťažké si takúto funkciu napísať, keby si vedel, čo je to cyklus :)
Dakujem, to mi dost pomohlo :)
johny3212 napísal:Tieto funkcie vracaju dlzku po ukoncovaci znak. To je bobre. Problem je, ze nemozes pouzit scanf, lebo ten berie do uvahy iba jeden retazec z konzoli myslim :). Pouzi getline.
getline() sa mi neda vzdy pouzit. Ale vdaka tvojmu tipu som objavil gets(). To ti je brutalna funkcia :))) Diky aj tebe :)

Program spraveny. Dalsi pripisany bod k mojmu zapoctu :)
Napísať odpoveď