c-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. 字符串的末尾需要null终止字符。所以缓冲区太短了。

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

最新更新