Задача на строки в Си: как конкатенировать строки без библиотечных функций(старый вопрос удален)?

В Си нет встроенных функций для конкатенации строк, но мы можем объединить две строки вручную, используя указатели и циклы. Ниже приведен пример кода, который объединяет две строки без использования библиотечных функций:

#include <stdio.h>

void concatenate(char *s1, char *s2) {
    while (*s1) {
        s1++;
    }
    
    while (*s2) {
        *s1 = *s2;
        s1++;
        s2++;
    }
    
    *s1 = '';
}

int main() {
    char str1[100] = "Hello";
    char str2[100] = " World";
    
    concatenate(str1, str2);
    
    printf("Concatenated string: %sn", str1);

    return 0;
}

В этом примере мы объявляем и инициализируем два массива символов str1 и str2. Затем мы передаем эти массивы в функцию concatenate, которая принимает два указателя на первый символ каждой строки.

В функции concatenate мы сначала перемещаем указатель s1 в конец первой строки с помощью цикла while (*s1). Затем мы копируем символы из второй строки в конец первой строки, увеличивая указатели s1 и s2 на каждой итерации цикла. Наконец, мы добавляем нулевой символ '' в конец объединенной строки, чтобы обозначить ее конец.

В функции main мы вызываем функцию concatenate с нашими массивами str1 и str2, а затем выводим результат с помощью функции printf. Результат будет строка, содержащая обе исходные строки, т.е. "Hello World".