Написать функцию, которая возвращает массив символов с элемента N по M из заданной строки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Стоит задача написать функцию, которая возвращает массив символов с элемента N по M из заданной строки str. Пишу так, но ничего не выходит:
#include <stdio.h>
 
char *func(char a[],int n, int m)
    {
        int i,k=0;
        char b[strlen(a)];
        for (i=n; i<=m; i++)
        {
            b[k]=a[i];
            k++;
        }
        return b;
    }
И как потом в int main() мне какого-нибудь массиву символов присвоить то, что возвращает функция?

Решение задачи: «Написать функцию, которая возвращает массив символов с элемента N по M из заданной строки»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <assert.h>
 
char* func(const char a[], size_t n, size_t m)
{
    assert(n <= m);
    assert(m < strlen(a));
 
    size_t len = m - n + 1;
    char* b = calloc(1, sizeof(char) * (len + 1));
    strncpy(b, a + n, len);
 
    return b;
}
 
 
int main()
{
    char* str = func("I Am Student", 2, 3);
 
    printf("[%s]", str);
 
    free(str);
 
    return 0;
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек для работы со строками и символами.
  2. Объявление функции с названием func, которая принимает три аргумента:
    • const char a[] - указатель на начало строки,
    • size_t n - индекс первого символа, который необходимо скопировать,
    • size_t m - индекс последнего символа, который необходимо скопировать.
  3. Проверка двух условий:
    • n <= m - чтобы не было попытки копирования за пределами строки,
    • m < strlen(a) - чтобы не было выхода за пределы строки.
  4. Вычисление длины подстроки len как разности m - n + 1.
  5. Выделение памяти под массив символов b с помощью функции calloc.
  6. Копирование подстроки из исходной строки в выделенный массив символов b с помощью функции strncpy.
  7. Возврат указателя на начало выделенного массива символов b.
  8. Вывод результата работы функции func в консоль.
  9. Освобождение памяти, выделенной под массив символов str, с помощью функции free.
  10. Завершение работы программы с возвратом значения 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5
Похожие ответы