CrazyEngineers Archive
Old, but evergreen and popular discussions on CrazyEngineers, presented to you in read-only mode.
@samaira • 12 Jul, 2009

How to write a program in c to find a substring? (without using library functions) ?

@reachrkata • 12 Jul, 2009 Using For Loops and Character comparison.

-Karthik
😁
@samaira • 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 • 13 Jul, 2009 Please post clear question, post what you have tried so far such taht we can guide you..
@samaira • 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 • 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 • 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 • 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 • 13 Jul, 2009 hey shalini thanks for ur help.:smile:
@shalini_goel14 • 13 Jul, 2009 @Samaira If you program works then don't forget to post the complete working program here also.

Thanks !
@yogesh_dhiman • 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 • 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]
13.6k views

Related Posts

@Keem · Oct 20, 2012

what does a two legged stirrup, 3, 4,6 legged stirrup looks like?
22.6k views

@maria flor · Jul 7, 2011

Concrete beam 8meters long and spaced 4m center-to-center are used to support a concrete slab 115 mm thick. The beams have effective depth of 650 mm measured from the slab...
3.8k views

@Asif ri · Sep 2, 2013

what are the job opportunities available in public as well as private sector after an M.Tech in electrical engineering?
5.5k views

@zaveri · Jul 6, 2013

Well we all like chocolate, but only when they are freshly taken out from the refrigerator, and present as chilled solid bars. but once they are put in warm places,...
5.1k views

@khaled hamza · Dec 22, 2010

Generator Loss of Excitation Relay (40G). Electrical Generator Protection Relays. Electrical Generator is the main source of Electricity at Power Plant, we should make a many methods to protect the...
3.7k views