c program to find a substring

Discussion in 'Computer Science | IT | Networking' started by samaira, Jul 12, 2009.

    samaira Certified CEan

    Message Count:
    59
    Ratings Received:
    +0
    Engineering Discipline:
    Computer Science
    how to write a program in c to find a substring???(without using library functions):confused:

    reachrkata Certified CEan

    Message Count:
    212
    Ratings Received:
    +0
    Engineering Discipline:
    Electronics
    Using For Loops and Character comparison.

    -Karthik
    :happy:

    samaira Certified CEan

    Message Count:
    59
    Ratings Received:
    +0
    Engineering Discipline:
    Computer Science
    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
    • The MOD Squad

    English-Scared Moderator

    Message Count:
    6,479
    Ratings Received:
    +220
    Engineering Discipline:
    Electrical
    Please post clear question, post what you have tried so far such taht we can guide you..

    samaira Certified CEan

    Message Count:
    59
    Ratings Received:
    +0
    Engineering Discipline:
    Computer Science
    #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
    • The MOD Squad

    English-Scared Moderator

    Message Count:
    6,479
    Ratings Received:
    +220
    Engineering Discipline:
    Electrical
    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 Certified CEan

    Message Count:
    59
    Ratings Received:
    +0
    Engineering Discipline:
    Computer Science
    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 Certified CEan

    Message Count:
    2,125
    Ratings Received:
    +6
    Hi samaira,

    Code:
    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 Certified CEan

    Message Count:
    59
    Ratings Received:
    +0
    Engineering Discipline:
    Computer Science
    hey shalini thanks for ur help.:smile:

    shalini_goel14 Certified CEan

    Message Count:
    2,125
    Ratings Received:
    +6
    @Samaira If you program works then don't forget to post the complete working program here also.

    Thanks !

    yogesh_dhiman Certified CEan

    Message Count:
    12
    Ratings Received:
    +0
    Engineering Discipline:
    Computer Science
    //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();
    }

Share This Page