Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Print substring of a given string without using any string function and loop in C

  • Difficulty Level : Easy
  • Last Updated : 14 Jul, 2017

Write a function mysubstr() in C that doesn’t use any string function, doesn’t use any loop and prints substring of a string. The function should not modify contents of string and should not use a temporary char array or string.

For example mysubstr(“geeksforgeeks”, 1, 3) should print “eek” i.e., the substring between indexes 1 and 3.

Take a step-up from those "Hello World" programs. Learn to implement data structures like Heap, Stacks, Linked List and many more! Check out our Data Structures in C course to start learning today.

One solution is to use recursion. Thanks to Gopi and oggy for suggesting this solution.




#include<stdio.h>
  
// This function prints substring of str[] between low and
// high indexes (both inclusive).  
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;
}

Output:



eek

How to do it if recursions is also not allowed?
We can always use pointer arithmetic to change the beginning part. For example (str + i) gives us address of i’th character. To limit the ending, we can use width specifier in printf which can be passed as an argument when * is used in format string.




#include <stdio.h>
  
// This function prints substring of str[] between low and
// high indexes (both inclusive).  
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;
}

Output:

eek

This article is contributed by Rahul Jain. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above




My Personal Notes arrow_drop_up
Recommended Articles
Page :