Вы можете использовать snprintf
и его функцию для возврата нужного размера, если у него есть свободное место:
const char *string1 = "www.google";
char *string2;
size_t length;
length = snprintf(NULL, 0, "http://%s.com", string1);
if (length < 0) {
// Handle error.
} else {
string2 = malloc(length + 1);
snprintf(string2, length + 1, "http://%s.com", string1);
}
Немного другой вариант, при котором строка формата не используется дважды:
const char *string1 = "www.google";
const char *format = "http://%s.com";
char *string2;
size_t length;
length = snprintf(NULL, 0, format, string1);
if (length < 0) {
// Handle error.
} else {
string2 = malloc(length + 1);
snprintf(string2, length + 1, format, string1);
}