CrazyEngineers
  • c program to find a substring

    samaira

    samaira

    @samaira-P4RsEf
    Updated: Oct 25, 2024
    Views: 2.4K
    how to write a program in c to find a substring???(without using library functions)😕
    0
    Replies
Howdy guest!
Dear guest, you must be logged-in to participate on CrazyEngineers. We would love to have you as a member of our community. Consider creating an account or login.
Replies
  • reachrkata

    MemberJul 12, 2009

    Using For Loops and Character comparison.

    -Karthik
    😁
    Are you sure? This action cannot be undone.
    Cancel
  • samaira

    MemberJul 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
    Are you sure? This action cannot be undone.
    Cancel
  • Saandeep Sreerambatla

    MemberJul 13, 2009

    Please post clear question, post what you have tried so far such taht we can guide you..
    Are you sure? This action cannot be undone.
    Cancel
  • samaira

    MemberJul 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
    Are you sure? This action cannot be undone.
    Cancel
  • Saandeep Sreerambatla

    MemberJul 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.
    Are you sure? This action cannot be undone.
    Cancel
  • samaira

    MemberJul 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.
    Are you sure? This action cannot be undone.
    Cancel
  • shalini_goel14

    MemberJul 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 !
    Are you sure? This action cannot be undone.
    Cancel
  • samaira

    MemberJul 13, 2009

    hey shalini thanks for ur help.:smile:
    Are you sure? This action cannot be undone.
    Cancel
  • shalini_goel14

    MemberJul 13, 2009

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

    Thanks !
    Are you sure? This action cannot be undone.
    Cancel
  • yogesh_dhiman

    MemberJul 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();
    }
    Are you sure? This action cannot be undone.
    Cancel
  • jkr0103

    MemberJul 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]
    Are you sure? This action cannot be undone.
    Cancel
Home Channels Search Login Register