Witam. Na wstępie może powiem, że jestem świeżakiem jeśli chodzi o programowanie, więc zbyt skomplikowana nomenklatura może nie zostać przez mnie w pełni zrozumiana, ale do rzeczy. W ramach praktyki postanowiłem napisać sobie funkcję kopiującą C-string z tablicy do tablicy. Oto on:
#include <iostream>
using namespace std;
char* strcpy(char *cel, const char *zrodlo);
int main() {
const char *pierwsza = "hello 123 123";
char druga[80];
strcpy(druga, pierwsza);
cout << pierwsza << endl;
cout << druga << endl;
return 0;
}
char* strcpy(char *cel, const char *zrodlo) {
char *poczatek;
poczatek = cel;
for(int i=0; zrodlo[i]!='\0'; i++) {
cel[i] = zrodlo[i];
}
return poczatek;
}
W rezultacie po przekopiowaniu i wypisaniu drugiej tablicy dostaję "hello 123 123(...)", gdzie w miejscu wielokropka są jeszcze jakieś śmieci. Co dziwne (a przynajmniej dla mnie), po zmianie pierwszej linijki w mainie na:
const char *pierwsza = "hello 123 123";
program działa jak najbardziej poprawnie i nie wyrzuca mi żadnych śmieci.
Teraz pytanie - czy wynika to z różnic pomiędzy notacjami (jeśli tak to z jakich), czy może coś robię źle w pozostałej części programu?
Z góry dziękuję za wszelką pomoc.