代码
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库,它会起作用。
另一个问题是,我是否正确使用了指针?我是这个话题的新手,它令人困惑,所以我并不真正理解它。
我试着把两个句子加在一起
-
字符串的末尾需要null终止字符。所以缓冲区太短了。
-
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;
}