samaira
samaira
Branch Unspecified
12 Jul 2009

c program to find a substring

how to write a program in c to find a substring???(without using library functions)😕
reachrkata

reachrkata

Branch Unspecified
12 Jul 2009
Using For Loops and Character comparison.

-Karthik
😁
samaira

samaira

Branch Unspecified
13 Jul 2009
that's quite obvious but i m not able to get the output.To be frank i want the code of the program.Plz help if u can
Saandeep Sreerambatla

Saandeep Sreerambatla

Branch Unspecified
13 Jul 2009
Please post clear question, post what you have tried so far such taht we can guide you..
samaira

samaira

Branch Unspecified
13 Jul 2009
#include<stdio.h>
#include<conio.h>
int main()
{
int i=0,j=0;
char a[10],b[10];
clrscr();
printf("enter the main string: ");
scanf("%s",a);
printf("\n enter the second string: ");
scanf("%s",b);
while(a!='\0')
{
if(a==b[j])
{
i++;
j++;}

else
{
j=0;
if(a==b[j])
j++;
i++;
}
else
{
printf("the given string is not substring");
}
printf("\n the given substring is present");
}
getch();
}
just check the program and tell me where i m going wrong
Saandeep Sreerambatla

Saandeep Sreerambatla

Branch Unspecified
13 Jul 2009
This is my understanding..

Before the first if loop you have initialized i=0 and j=0.

If that condition fails again you have initialized j=0.

So if the first IF loop fails ..
Then the If loop in the else part will also fail for j=0.

This functionality is very easy by using for loops.

First take the main string into a[] , then substring into b[]

Use two for loops and you will get the answer.
samaira

samaira

Branch Unspecified
13 Jul 2009
i have initialized j=0 again after the if loop fails coz the string might appear at any position of the second string like e.g we have to find whether the string "comp" is a substring of "mech & comp".so after the condition fails the second string is again ready to be checked from first while the counter of second goes on increasing.
shalini_goel14

shalini_goel14

Branch Unspecified
13 Jul 2009
Hi samaira,

int blen=0, k=0;

//assign length of be to blen
blen =strlen(b); //not sure

 while(a[i]!='\0')
      {
       if(a[i]==b[j])
          {
           i++;
           j++;
if(j==blen){
j=0;
}

}

        else
        {
            j=0;
          //if(a[i]==b[j])
           //j++;
        i++; 
           }
        else
{
        printf("the given string is not substring");
}
printf("\n the given substring is present");
}
getch();
}
Try this including b length's check in your program, if it works. Also, I think you can include a separate variable k in your program and initialize it to 0 and set its value as 1 when your check in if loop works and then at the end while printing message you can check if it is 1 then "matched" else "unmatched"

Thanks !
samaira

samaira

Branch Unspecified
13 Jul 2009
hey shalini thanks for ur help.:smile:
shalini_goel14

shalini_goel14

Branch Unspecified
13 Jul 2009
@Samaira If you program works then don't forget to post the complete working program here also.

Thanks !
yogesh_dhiman

yogesh_dhiman

Branch Unspecified
23 Jul 2009
//Without using Functions.

#include(stdio.h) // place this '<' & '>' instead of '(' & ')' before stdio.h
#include(string.h)
void main( )
{
char st[20],sub[10],temp[10];
int pos, i, j;
clrscr( );
printf("Enter the main string:");
gets(st);
printf("\nEnter the substring to insert:");
gets(sub);
printf("Enter the index position:");
scanf("%d",&pos);
if(pos<=strlen(st)) {
for(i=0;i<=strlen(st);i++) {
if(i==pos)
{
for(j=0;st!='\0';j++) // to store the 'st' to 'temp' from given position.
{
temp[j]=st;
i++;
}
temp[j]='\0';
i=pos;
for(j=0;sub[j]!='\0';j++) // to insert a sub-str to main string.
{
st=sub[j];
i++;
}
for(j=0;temp[j]!='\0';j++) // Lastly to insert the 'temp' to 'st' after sub-str.
{
st=temp[j];
i++;
}
st='\0';
}}
printf("\nAfter adding the sub-string: %s",st);
}
else
printf("\nSorry, it is not possible to insert a substring in that position.");
getch();
}
jkr0103

jkr0103

Branch Unspecified
05 Jul 2015
[HASHTAG]#include[/HASHTAG] <iostream>
using namespace std;
int main()
{
    char a[] = {"Hanuman"};
    char b[] = {"Hanuu"};
    int i = 0, j = 0;
    while(a[I]!='\0')
    {
        if(a[I]==b[j])
        {
            j++;
            if (b[j] == '\0')
                break;
        }
        else
        {
            i = i-j;
            j = 0;
        }
        i++;
    }
    if(b[j] == '\0')
    {
        cout << "substring exists\n";
    }
    else
    {
        cout << "substring does not exists\n";
    }
    return 0;
} 
[/I][/I]

Share this content on your social channels -

Only logged in users can reply.