kopiowanie char

0

Witam.

Chciałbym się dowiedzieć dlaczego poniższa funkcja :
http://pastebin.com/FL9eyqZy

Nie kopiuje...
char * nazwa = "PAWEL";
char * nazwa2;

chara nazwa, do nazwa2 ?

Natomiast po przeslaniu char nazwa ( bez wskaznika ) funkcja dziala.

pozdrawiam

1
void copychar(char *dest, char *src )
{
	int index=-1;
	do
	{
		index+=1;
		dest[index] = src[index];
	} while(src[index]!='\0');
}

Funkcja copychar wymaga aby dest wskazywał na pewien obszar pamięci, który można nadpisać.
Na przykład:

 
char dest[100];
copychar(dest, "ala ma kota");
printf("dest: %s\n", dest);
 
char *dest = (char *)malloc(sizeof(char) * 100);
copychar(dest, "ala ma kota");
printf("dest: %s\n", dest);
free(dest);
0

Ale i tak ta funkcja jest brzydka moim zdaniem:

  • czemu jako index używana jest liczba ze znakiem, czyżbyśmy chcieli sięgać do ujemnych indeksów w tablicy?
  • czemu na starcie mamy index=-1 a następnie jako pierwsza instrukcja w pętli mamy index+=1
  • moim zdaniem brzydka jest pętla do....while która wymusza większy zakres zmiennej index niż jest potrzebny.

1 użytkowników online, w tym zalogowanych: 0, gości: 1