Ошибка. ни один экземпляр перегруженной функции "strcpy_s" не соответствует списку аргументов - PullRequest
0 голосов
/ 05 апреля 2020

Я получаю сообщение об ошибке, когда хочу скопировать исходную строку, которая является const char *, в строку назначения, которая является char *. Код не получил ошибок, когда я использую strcpy (), но сказать, что он устарел. Я имею в виду, у него нет проблем с типом аргументов. И когда я использую безопасную форму (strcpy_s), она не принимает тип строки назначения (char *). Я знаю, что могу использовать вместо этого strdup (); но я на самом деле хочу знать, что случилось с типом строки назначения.

const char* str1 = "test"; char* str2 = new char[strlen(str1) + 1]; char str3[5]; strcpy(str2, str1); // no errors. But it's deprecated strcpy_s(str2, str1); // error. No instance of overloading function "strcpy_s"..... strcpy_s(str3, str1); // It works without any problem.

1 Ответ

0 голосов
/ 05 апреля 2020

strcpy_s (str2, str1); эта перегрузка требует размера в байтах

strcpy_s(str2,strlen(str2) * sizeof(char), str1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...