В функции определить количество символов в каждом указателе - 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
- Возвращение успешного статуса программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д