Основное использование 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 ответ

  1. строки требуют завершающего нулевого символа в конце. Так что буфер слишком короткий.

  2. 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;
}
Другие вопросы по тегам