c program to find a substring

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

Replies

  • reachrkata
    reachrkata
    Using For Loops and Character comparison.

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

    Thanks !
  • yogesh_dhiman
    yogesh_dhiman
    //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
    [HASHTAG]#include[/HASHTAG] 
    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]

You are reading an archived discussion.

Related Posts

Hi am salman m new to this site i want to know about basic of aeronautical engg & about future .
i jus want 2 kno wot all r the important topics dat can b considered for a paper presentation on dis topic?? thanx in advance!!
Hello everyone..actually my supervisor want me to do this project for my final year..who can teach me how to build the audiometry software by using visual basic or labview..??this audiometry...
For people who love driving and especially for those who are active bloggers and photographers, check this out - The Great Driving Challenge | User Application
i need ideas how to do projects plz