Включение строки в другую строку в C - PullRequest
2 голосов
/ 05 февраля 2012

Как мне "включить" строку в другую строку в C?

Вот пример:

string1 = "www.google";
string2 = "http://"+string1+".com";

У меня проблемы с strcat ().

Спасибо

Ответы [ 2 ]

5 голосов
/ 05 февраля 2012

Вы можете использовать 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);
}
4 голосов
/ 05 февраля 2012

У меня проблемы с strcat ()

Тогда попробуйте sprintf:

char str[] = "www.google";
char dest[100];

snprintf(dest, sizeof(dest), "http://%s.com", str);

7.19.6.5-3

Функция snprintf возвращает количество символов, которое было написано, если бы n было достаточно большим, не считая завершающий нулевой символ.

...