Spojení řetězců C

Vývojová prostředí, aplikace, skripty, http://www... síťové programy, internet, sdílení...
Odpovědět
dark_stuff
Začátečník
Začátečník
Uživatelský avatar
Registrován: 23. bře 2006
Bydliště: Bruntál / Olomouc

Spojení řetězců C

Příspěvek 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í...
Lidi jsou různí. Víc nesmím říct.
Černá karta je rasistická!
Trek
Začátečník
Začátečník
Uživatelský avatar
Registrován: 16. kvě 2008

Re: Spojení řetězců C

Příspěvek 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.
dark_stuff
Začátečník
Začátečník
Uživatelský avatar
Registrován: 23. bře 2006
Bydliště: Bruntál / Olomouc

Re: Spojení řetězců C

Příspěvek 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...
Lidi jsou různí. Víc nesmím říct.
Černá karta je rasistická!
Trek
Začátečník
Začátečník
Uživatelský avatar
Registrován: 16. kvě 2008

Re: Spojení řetězců C

Příspěvek 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.
dark_stuff
Začátečník
Začátečník
Uživatelský avatar
Registrován: 23. bře 2006
Bydliště: Bruntál / Olomouc

Re: Spojení řetězců C

Příspěvek 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
Lidi jsou různí. Víc nesmím říct.
Černá karta je rasistická!
Odpovědět

Zpět na „Programování a web“