Если у вас есть опыт работы с Си, вы заметите, что строки - это только массивы символов, где последний символ является нулевым символом.
Теперь это довольно неудобно, так как вам нужно найти последний символ, чтобы добавить что-то. strcat
сделает это за вас.
Таким образом, strcat ищет в первом аргументе нулевой символ. Затем он заменит это на содержимое второго аргумента (до тех пор, пока оно не станет нулевым).
Теперь пройдемся по вашему коду:
message = strcat("TEXT " + var);
Здесь вы добавляете что-то к указателю на текст «TEXT» (тип «TEXT» является const char *. A pointer.).
Это обычно не работает. Также модификация массива «TEXT» не будет работать, так как он обычно помещается в постоянный сегмент.
message2 = strcat(strcat("TEXT ", foo), strcat(" TEXT ", bar));
Это может сработать лучше, за исключением того, что вы снова пытаетесь изменить статический текст. strcat не выделяет новую память для результата.
Я бы предложил сделать что-то вроде этого:
sprintf(message2, "TEXT %s TEXT %s", foo, bar);
Прочтите документацию sprintf
, чтобы проверить ее параметры.
А теперь важный момент:
Убедитесь, что в буфере достаточно места для текста и нулевого символа. Есть пара функций, которые могут вам помочь, например, strncat и специальные версии printf, которые выделяют вам буфер.
Несоблюдение размера буфера приведет к повреждению памяти и удаленному использованию ошибок.