В функции определить количество символов в каждом указателе - C (СИ)
Формулировка задачи:
Си
Создаем два указателя со строками. Необходимо создать функцию, в функцию передаем два указателя со строками. Необходимо в функции определить количество символов в каждом указателе, выделить память для третьего указателя и сохранить строки с двух указателей. переданных в массив в одном указателе.Решение задачи: «В функции определить количество символов в каждом указателе»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
char* my_concat(char* str1, char* str2)
{
int str1_len = 0, str2_len = 0;
while(str1[str1_len] != '\0') str1_len++;
while(str2[str2_len] != '\0') str2_len++;
char* ans = (char*) calloc(str1_len + str2_len + 1, sizeof(char));
sprintf(ans, "%s%s", str1, str2);
return ans;
}
int main(int argc, char** argv)
{
char* str1 = "Hello ";
char* str2 = "World!";
char* str3 = my_concat(str1, str2);
printf("%s\n", str3); free(str3);
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с памятью и вводом-выводом
- Определение функции
my_concat, которая принимает два указателя на строки и возвращает результат их конкатенации - Инициализация переменных
str1_lenиstr2_lenв функцииmy_concatравными нулю - Проход по каждому символу строки
str1иstr2с помощью циклаwhileдо тех пор, пока не встретится символ конца строки '\0' - Увеличение счетчика
str1_lenиstr2_lenна единицу при каждой итерации цикла - Выделение памяти под новую строку
ansс помощью функцииcalloc - Использование функции
sprintfдля заполнения выделенной памяти содержимым строкstr1иstr2 - Возвращение полученной строки из функции
my_concat - Инициализация строк
str1иstr2в функцииmain - Вызов функции
my_concatс передачей строкstr1иstr2в качестве аргументов - Вывод результата вызова функции
my_concatна экран с помощью функцииprintf - Освобождение памяти, выделенной под результат вызова функции
my_concat, с помощью функцииfree - Возвращение успешного статуса программы