Dobrý den,
Rozhodl jsem se, že se pokusím naučit C++ a tak jsem otevřel knihu Mistrovství v C++. Je tam následující příklad:
// delete.cpp -- pouziti operatoru delete
#include<iostream>
#include<cstring>
using namespace std;
char * getname(); // funkcni prototyp
int main() {
char *name; // vytvari ukazatel, ale nealokuje pamet
name = getname(); // prirazuje adresu retezce do name
cout << name << " na adrese " << (int *)name << "\n";
delete[] name; //uvolnil pamet
name = getname(); // nove pouziti uvolnene pameti
cout << name << " na adrese " << (int *)name << "\n";
delete[] name; // opet uvolnil pamet
getchar();
return 0;
}
char * getname() // vraci ukazatel novemu retezci
{
char temp[80]; // docasna pamet
cout << "Zadejte prijmeni: ";
cin >> temp;
char * pn = new char[strlen(temp) + 1];
strcpy(pn, temp);
return pn;
}
Ovšem nechce mi už v několika příkladech fungovat strcpy, tak jsem použil strcpy_s ovšem to mi zde nefunguje.
Pokud použiji strcpy tak to napíše tuto chybu:
Error C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
Pokud použiji strcpy_s tak to napíše tyto chyby:
Error (active) E0304 no instance of overloaded function "strcpy_s" matches the argument list
Error C2660 'strcpy_s': function does not take 2 arguments
Snažil jsem se na toto téma přečíst nějaké články a použil strncpy (pn, temp, 100);
což vypíše opět chybu:
Error C4996 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
Asi se ptám hloupě ale jsem začátečník a samouk, možná přijdou i další začátečnické otázky..... Moc děkuji za rady. B.