strcpy_s、strcat_s的基本用法

suzh9iv8  于 2022-12-29  发布在  其他
关注(0)|答案(1)|浏览(129)

Code

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时,它在picture中给出这个错误,但是如果我使用CRT库,它就可以工作。
另一个问题是我正确地使用了指针吗?我是这个主题的新手,它很混乱,所以我不是很理解它。
我试着把两个句子加在一起

zzwlnbp8

zzwlnbp81#

1.字符串的结尾需要空终止字符。因此缓冲区太短。

  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;
}

相关问题