Рубрики

Вывести подстроку данной строки без использования какой-либо строковой функции и цикла в C

Напишите функцию mysubstr () в C, которая не использует строковую функцию, не использует цикл и печатает подстроку строки. Функция не должна изменять содержимое строки и не должна использовать временный массив символов или строку .

Например, mysubstr («geeksforgeeks», 1, 3) должен вывести « eek », то есть подстроку между индексами 1 и 3.

Одним из решений является использование рекурсии. Спасибо Гопи и Огги за предложение этого решения.

#include<stdio.h>

  
// Эта функция печатает подстроку str [] между low и
// высокие показатели (оба включительно).

void mysubstr(char str[], int low, int high)

{

    if (low<=high)

    {

        printf("%c", str[low]);

        mysubstr(str, low+1, high);

    }

}

  

int main ()

{

    char str[] = "geeksforgeeks";

    mysubstr(str, 1, 3);

    return 0;

}

Выход:

eek

Как это сделать, если рекурсии тоже не разрешены?
Мы всегда можем использовать арифметику указателя, чтобы изменить начальную часть. Например, (str + i) дает нам адрес i-го символа. Чтобы ограничить окончание, мы можем использовать спецификатор ширины в printf, который может быть передан в качестве аргумента, когда * используется в строке формата.

#include <stdio.h>

  
// Эта функция печатает подстроку str [] между low и
// высокие показатели (оба включительно).

void mysubstr(char str[], int low, int high)

{

    printf("%.*s", high-low+1, (str+low));

}

  

int main ()

{

    char str[] = "geeksforgeeks";

    mysubstr(str, 1, 3);

    return 0;

}

Выход:

eek

Эта статья пополняемая Рахул Джейна. Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Вывести подстроку данной строки без использования какой-либо строковой функции и цикла в C

0.00 (0%) 0 votes