c program to find a substring

samaira

samaira

@samaira-P4RsEf Oct 25, 2024
how to write a program in c to find a substring???(without using library functions)😕

Replies

Welcome, guest

Join CrazyEngineers to reply, ask questions, and participate in conversations.

CrazyEngineers powered by Jatra Community Platform

  • reachrkata

    reachrkata

    @reachrkata-FOcqhH Jul 12, 2009

    Using For Loops and Character comparison.

    -Karthik
    😁
  • samaira

    samaira

    @samaira-P4RsEf Jul 13, 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

    @saandeep-sreerambatla-hWHU1M Jul 13, 2009

    Please post clear question, post what you have tried so far such taht we can guide you..
  • samaira

    samaira

    @samaira-P4RsEf Jul 13, 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

    @saandeep-sreerambatla-hWHU1M Jul 13, 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

    @samaira-P4RsEf Jul 13, 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

    @shalini-goel14-ASmC2J Jul 13, 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

    @samaira-P4RsEf Jul 13, 2009

    hey shalini thanks for ur help.:smile:
  • shalini_goel14

    shalini_goel14

    @shalini-goel14-ASmC2J Jul 13, 2009

    @Samaira If you program works then don't forget to post the complete working program here also.

    Thanks !
  • yogesh_dhiman

    yogesh_dhiman

    @yogesh-dhiman-KMW24I Jul 23, 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

    @jkr0103-AXiXHm Jul 5, 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]