Основное использование strcpy_s, strcat_s
char* CreateString(char* string1, char* string2) {
int length = strlen(string1) + strlen(string2);
// Allocate memory for the resulting string
char* result = malloc((length) * sizeof(char));
// Concatenate the two strings
strcpy_s(result, sizeof result, string1);
strcat_s(result,sizeof result, string2);
return result;
}
У меня есть этот простой код, все, что я хочу сделать, это сложить их вместе, но всякий раз, когда я использую strcpy_s или strcat_s, он дает эту ошибку на картинке. Но это работает, если я использую библиотеку CRT.
Другой вопрос, правильно ли я использовал Указатели? Я новичок в этой теме, и это сбивает с толку, поэтому я действительно не понимаю.
Я пытался сложить два предложения вместе
1 ответ
строки требуют завершающего нулевого символа в конце. Так что буфер слишком короткий.
sizeof result
дает размер указателя, а не размер объекта, на который ссылаются.
char* CreateString(char* string1, char* string2) {
size_t length = strlen(string1) + strlen(string2) + 1;
// or for Windows
// rsize_t length = strlen(string1) + strlen(string2) + 1;
// Allocate memory for the resulting string
char* result = malloc((length) * sizeof(*result));
// Concatenate the two strings
strcpy_s(result, length, string1);
strcat_s(result, length, string2);
return result;
}