Funkcja kopiująca tekst

0

Witam,
chciałbym zamienić taką funkcję kopiującą tekst:

void kopiuj(char* co, char* doczego)
{
	while(*(doczego++) = *(co++));
}

na taką, która w warunku pętli nie ma przypisania, jednak nie potrafię tego zrobić, ponieważ program oprócz tekstu kopiuje "śmieci" w niezapisane miejsca tablicy (przypuszczam, że pętla nie zatrzymuje się na znaku kończącym string).

Oto kod całego programu:

#include <iostream>

using namespace std;

//Funkcja, ktora dziala

//void kopiuj(char* co, char* doczego)
//{
//	while(*(doczego++) = *(co++));
//}


//Moja proba przerobienia funkcji

void kopiuj(char* co, char* doczego)
{
	while (*co) //petla powinna sie przerwac, gdy wskaznik pokaze na znak null(0) konczacy string
	{
		*doczego = *co;
		doczego++;
		co++;
	}

}

void main()
{
	char Tekst[] = "Napis";
	char Kopia[100];
	kopiuj(Tekst, Kopia);
	cout << "Tekst: " << Tekst;
	cout << "\nKopia tekstu: " << Kopia;

	cout << system("pause>>null");
}

Proszę Was o pomoc i wskazanie mi błędów.

0

Pętla się kończy, funkcja nic dalej nie kopiuje. Po prostu nie kopiujesz nulla z końca co i tekst nie jest zakończony. Dopisanie pod koniec funkcji *doczego = *co powinno rozwiązać problem

0

albo zamiana while() {} na do {} while()

0

@msm
Twój sposób działa, dzięki.

@Azarien
Robiąc to w ten sposób:

void kopiuj(char* co, char* doczego)
{
        do
        {
                *doczego = *co;
                doczego++;
                co++;
        } while (*co);
}

nadal wypisuje mi jakieś śmieci.

0

można też po while { } dopisać, *doczego = 0; i też będzie działać.

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