Нужен аналог функции strncat - C (СИ)
Формулировка задачи:
Напишите свою реализацию этой функции.
Решение задачи: «Нужен аналог функции strncat»
textual
Листинг программы
char* strncat(char* dist, char* source, int count)
{
char* str = dist;
for (; *str; ++str) { ; }
for (; *source && (count > 0); *str++ = *source++, --count) { ; }
*str = 0;
return dist;
}
Объяснение кода листинга программы
В данном коде представлен вариант реализации функции strncat на языке C.
char* strncat(char* dist, char* source, int count)— объявление функции с тремя аргументами:dist— указатель на строку, к которой будет прикреплена новая строка;source— указатель на строку, которую необходимо присоединить;count— максимальное количество символов, которые будут скопированы.
char* str = dist;— инициализация переменнойstrуказателем наdist.for (; *str; ++str)— цикл, который будет выполняться до тех пор, пока*strне станет равным нулю. Это необходимо для прохода по исходной строкеdistи подсчета количества символов в ней.for (; *source && (count > 0); *str++ = *source++, --count)— цикл, который будет выполняться до тех пор, пока*sourceне станет равным нулю иcountне станет меньше или равным нулю. В каждой итерации в переменнуюstrзаписывается следующий символ из строкиsource, а затем уменьшается значениеcountи увеличиваетсяstr. Таким образом, в переменнуюstrпоследовательно записываются символы изsource, пока они не заполнят оставшуюся часть строкиdistили пока не закончатся символы вsource.*str = 0;— присвоение переменнойstrнулевого значения, чтобы указать на конец новой строки.return dist;— возврат указателя на исходную строкуdist. Таким образом, функция strncat прикрепляет строкуsourceк концу строкиdist, сохраняя при этом не болееcountсимволов изsource. Если строкаsourceкорочеcount, то оставшиеся символы вdistостаются без изменений.