Stránka 1 z 1

Spojení řetězců C

Napsal: sob 28. lis 2009, 00:56
od dark_stuff
Zadání:Napište v jazyku C funkci char *spojeni(char *t1, char *t2), která vytvoří a vrátí textový řetězec, který vznikne spojením předaných textových řetězců. Ve funkci main pak tuto funkci otestujte... Povolené knihovny: stdio.h, stdlib.h.

Kód: Vybrat vše

#include <stdio.h>
#include <stdlib.h>

char text1[100];
char text2[100];
int i,l;

char *spojeni(char *t1, char *t2)
{
	
	void *text;
	for(i=0; *(t1+i)!='\0'; i++)
	{
		
	}
	for(l=0; *(t2+l)!='\0'; l++);
	{
		
	}
	text=(char *)malloc(i+l);
	strcpy(text, t1);
	strcat(text, t2);
	return(text);
	
}

int main()
{
	printf("Zadejte prvni retezec: ");
	scanf("%s", &text1);
	printf("Zadejte druhy retezec: ");
	scanf("%s", &text2);
	printf("Spojeni \"%s\" a \"%s\" je \"%s\".", text1, text2, spojeni(text1, text2));
	printf("\n");
	printf("%d", i+l);
	printf("\n\n");
	system("pause");
	return(0);
}
Odpovídá to zadání? Není tam něco "nekalého"? Nějak si nejsem jistý, jestli můžu použít strcpy a strcat... Nerad bych pak vymýšlel nějaké šílené cykly uprostřed hodiny, až mi vyučující řekne, že se mu to nelíbí...

Re: Spojení řetězců C

Napsal: sob 28. lis 2009, 01:30
od Trek
Mno strcpy a strcat neni ve zminovanych header souborech, nicmene na winech to slinkuje i kdyz to ty funkce pri kompilaci nezna, trochu zbesilost jazyka C.

Podle mne nesmis pouzit ty funkce strcpy a strcat. To tam jednoduchym cyklem naladujes. O par radku navic.

Re: Spojení řetězců C

Napsal: sob 28. lis 2009, 01:35
od dark_stuff
Já si to myslel :-D... prostě to nemůže jít jednoduše... OK, díky... pokud bych ty cykly nezvládl, stavím se pro radu :oops:

EDIT: Myslel sem si, že to nepůjde, ale zkusil sem to:

Kód: Vybrat vše

for(j=0; j<=i; j++)
	{
		*(text+j)=*(t1+j);
	}
	for(k=0; k<=l; k++)
	{
		*(text+k)=*(t2+k);
	}
Překladači se nelíbí, že text je typu void. Co s tím? :oops: Na dynamickou práci s pamětí sem prostě levej...

Re: Spojení řetězců C

Napsal: sob 28. lis 2009, 01:55
od Trek
Nevim proc pouzivas void, pouzij normalne char.
Cili char * text

a jinak *(pole + i) je to samy jako pole

PS:
Jinak fakt nechapu proc se uci na skolach jazyk C, jen pokud je to VS, tam stejne budes mit vsechny jazyky.

Re: Spojení řetězců C

Napsal: sob 28. lis 2009, 12:05
od dark_stuff
Dík... ani nevím, proč sem tam měl void :oops:
A jo, je to VŠ... Céčko bych jako zbytečnost neviděl, to je aspoň rozšířené... horší je to s takovým Lispem :-D