Naime kako sam shvatio strcpy prima dva argumenta i kopira drugi u prvi. Kako sam shvatio ako je izvor veci od destinacije pise van bafera. Zasto onda u donjem kodu:
Code:
{
char string1[]="No man is an island.";
char string2[9];
strcpy(string2,string1);
cout<<"string1: "<<string1<<endl;
cout<<"string2: "<<string2<<endl;
}
{
char string1[]="No man is an island.";
char string2[9];
strcpy(string2,string1);
cout<<"string1: "<<string1<<endl;
cout<<"string2: "<<string2<<endl;
}
dobijam izlaz:
string1: island.
string2: No man is an island.
Zasto se promenio string1, ovako bi valjda trebao da izgleda string2?
U drugom primeru strncpy prima treci argument tako da bude manji od broja clanova string1.
Code:
{
char string1[]="No man is an island.";
char string2[11];
strncpy(string2,string1,10);
cout<<"string1: "<<string1<<endl;
cout<<"string2: "<<string2<<endl;
}
{
char string1[]="No man is an island.";
char string2[11];
strncpy(string2,string1,10);
cout<<"string1: "<<string1<<endl;
cout<<"string2: "<<string2<<endl;
}
Po objasnjenju iz knjige ocekivao sam da iskopira samo 10 znakova. ali dobijam sledeci izlaz:
string1: No man is an island.
string2: No man is ¦¦No man is an island.
Zasto? Hvala unapred.