How to print all substrings of a given string in C

2 Answers

0 votes
#include <stdio.h>
#include <string.h>

void print_substrings(char str[], int len) {
    for (int start = 1; start <= len; start++) {   
        for (int i = 0; i <= len - start; i++) {
            int j = i + start - 1;           
            for (int k = i; k <= j; k++)
                printf("%c", str[k]);
            printf(" ");
        }
    }
}
 
int main()
{
    char str[] = "abcd";
    
    print_substrings(str, strlen(str));
    
    return 0;
}




/*
run:
 
a b c d ab bc cd abc bcd abcd 
 
*/

 



answered Sep 5, 2021 by avibootz
0 votes
#include <stdio.h>
#include <string.h>

void substring(char str[], char sub[], int start, int len){  
   int i = 0;  
   while (i < len) {  
      sub[i] = str[start + i];  
      i++;  
   }  
   sub[i] = '\0';  
}  

void print_substrings(char str[], int len) {
    char sub[10];
    for (int i = 0; i < len; i++) {
        for (int j = 1; j <= len - i; j++) {
            substring(str, sub, i, j);  
            printf("%s\n", sub);  
        }
    }
}
  
int main()
{
    char str[] = "abcd";
     
    print_substrings(str, strlen(str));
     
    return 0;
}
 
 
 
 
/*
run:
  
a
ab
abc
abcd
b
bc
bcd
c
cd
d
  
*/

 



answered Sep 5, 2021 by avibootz
...