Skocz do zawartości
amg

Kopiowanie Znaków

Rekomendowane odpowiedzi

może mi ktos powiedzieć gdzie jest błąd, rezultatem ma być treść tablicy "tab2" do której kopiuje treść "tab", ale cos sie powtarza i niee wiem czemu ???

 

char mystrcpy(char *t1, char *t2){//	int i;		//licznik	while (*t1)			//!='\0')	{									*t2 = *t1;			t1++;			t2++;	}	return (*t2);}void main (void){	int i;	char tab[]  = "pierwszy drugi trzeci";	char tab2[] = "zzz";		for (i=0; i<strlen(tab2); i++)		printf("%c",tab2[i]);	puts ("\n");	mystrcpy(tab, tab2);	strlen(tab2);	for (i=0; i<strlen(tab2); i++)	printf("%c",tab2[i]);	puts ("\n");}

Jak już piszesz kod to umieść go z łaski swojej w odpowiednim tagu. // Crosis

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

w ten sposób naruszasz pamięć... tab2[] ma zadeklaroane miejsce na 4 bajty zzz\0, a Ty wysyłąsz do mystrcpy wskaźniki na obie tablice... i zaczynasz kopiować pierwszy drugi trzeci\0 na 4B tablicy t2.. co prowadzi do naruszenia pamieci... przekraczasz zadeklarowana pamiec.. niestety C na to zezwala... co jest olbrzymią wadą... albo i zaletą zalezy jakei kto ma potrzeby :D

 

nie wiem czy dokłądnie tak trzeba zrobic... bo prawde mówiąc wskaźniki i tablice to jest najbardziej uciążliwa rzecz w C ale najprawdopodobniej musisz zrobić w funkcji mystrcpy nową tablicę operatorem new o wielkosci takiej jak strlen(t1)+1, i przypisać nowy wskaźnik do wskaźnika t2. Nie wiem czy mam tu rajce.. niech ktos aktualnie naczasie mnie poprawi.. i nie iwem czy trzeba w jaiś sposób zwalniać miejsce po tej zainicjowanej tablicy

 

na szczescie w C++ są klasy które umożliwiaą pisanie programów bez wnikania we wskaźniki i wielkości tablic...

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...