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
#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
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.
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.
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 If you program works then don't forget to post the complete working program here also. Thanks !
//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(); }