Untitled

mail@pastecode.io avatar
unknown
c_cpp
3 years ago
2.2 kB
3
Indexable
Never
// это concat из жабы тока которому задаешь длину результата + 1 
// чтоб можно было не полностью скреплять
// возвращает длину получившегося говна (dst - destination, src - source)
int ft_strlcat(char *dst, const char *src, unsigned int size)
{
    int res;

    res = 0;
    // тут создаю рез, дальше входим в цикл который проходит через dst
    while (*dst)
    {
        // указатель как я говорил ранее показывает на адрес первого
        // элемента в массиве который является буквой а значит не нулём
        // значит условие выполняется!!!
        res++;
        // если буква под указателем на самом деле буква а не 0 (конец)
        // то прибавляем к резу...
        dst++;
        // ...и прыгаем на след букву
    }
    // под конец этого цикла *dst будет указывать на конец строчки, то есть
    // NULL (он 0 поэтому не заходит в цикл тот)
    size = size - res - 1;
    // тут меняем size пушо такое условие (нужно оставить 1 байт места 
    // для этого NULL-а поэтому отнимаем 1)
    while (size--)
    {
        // так как dst остался на конце слова мы его приравниваем к *src 
        // который по дефолту указывает на первую букву src
        *dst = *src;
        // ну потом офк делаем шаг вперёд и там и там (и не забываем прибавить к резу)
        dst++;
        src++;
        res++;
    }
    // оканчиваем dst NULL-ом чтобы был тру string-ом
    *dst = '\0';
    // возвращаем рез
    return (res);
}