#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* safe_strcpy(const char* src, size_t dest_size) {
char* dest = (char*)malloc(dest_size);
if (dest == NULL) {
fprintf(stderr, "Memory allocation failed\n");
return NULL;
}
size_t ret = snprintf(dest, dest_size, "%s", src);
if (ret >= dest_size) {
// 字符串截断处理
dest[dest_size - 1] = '\0';
fprintf(stderr, "String truncated\n");
}
return dest;
}
int main() {
const char* source = "Hello, World!";
size_t size = 10;
char* result = safe_strcpy(source, size);
if (result != NULL) {
printf("Copied string: %s\n", result);
free(result);
}
return 0;
}