my_strcat(char *s, const char *t); функции.
Я думаю реализовать так, что сначала определяем массив длиной strlen(s) + strlen(t) + 1, и далее в него уже копируем последовательно содержимое *s и *t и в конце добавляем нуль. (тут необходимо примечание, что C я для микроконтроллеров применять буду, так что там нельзя всякие malloc использовать)
В оригинальной же функции strcat из string.h меняется непосредственно строка по указателю s. Вопрос: правильно ли я понимаю, что функция strcat безопасно сконкатенирует строку "a" и "bc", даже если первая строка длиной всего 1 символ, не происходит ли записи в "чужую" память?
нет, это забота вызывающего гарантировать, что в dest хватит места
Стандартная функция strcat требует чтобы первая строка могла вместить сложенные строки, иначе поведение не определено
UB при переполнении
Что такое UB?
undefined behaviour
Короче говоря, программа с уб может стереть тебе жёсткий диск и это будет легальное поведение программы. Живи с этим
Что strcpy не запишет мимо целевого массива, гарантий нет, даже в CRT, и именно поэтому её не очень любят программисты.
Обсуждают сегодня