amg Opublikowano 17 Listopada 2005 Zgłoś Opublikowano 17 Listopada 2005 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 Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 18 Listopada 2005 Zgłoś Opublikowano 18 Listopada 2005 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... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
amg Opublikowano 18 Listopada 2005 Zgłoś Opublikowano 18 Listopada 2005 dzieki za wskazówki...sprawdze Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...