Write the following function in C.
stripos — Find position of first occurrence of a case-
insensitive string
int stripos ( char* haystack, char* needle, int offset )
Returns the numeric position of the first occurrence of
needle in the
haystack string. Note that the needle may be a string of
one or more
characters. If needle is not found, stripos() will return -
1.
The function should not make use of any C library function
calls.
Answer Posted / vadivelt
#include<stdio.h>
int stripos(char* haystack, char* needle, int offset );
void main()
{
char a1[200], a2[20];
int iPostn = 0;
printf("ENTER THE HAYSTACK STRING:\n");
gets(a1);
printf("\nENTER THE STRING - TO BE SEARCHED\n");
gets(a2);
iPostn = stripos(&a1[0], &a2[0], iPostn);
if(iPostn > 0)
printf("\nSTRING STARTS AT THE POSITION: %d\n", iPostn);
else
printf("\nSTRING NOT FOUND: %d\n", iPostn);
getch();
}
int stripos(char* haystack, char* needle, int offset )
{
char ch, *needle1;
int pos = 0, temp;
if(haystack != '\0' && needle != '\0')
{
while(*haystack != '\0')
{
needle1 = needle;
pos++;
temp = 0;
if((*haystack == *needle1) || (*haystack == *needle1 - 32)
|| (*haystack == *needle1 + 32))
{
offset = pos;
needle1++;
haystack++;
while(*needle1 != '\0')
{
if((*haystack == *needle1) || (*haystack ==
*needle1 - 32) || (*haystack == *needle1 + 32))
{
haystack++;
needle1++;
pos++;
}
else
{
temp = 1;
offset = -1;
break;
}
}
}
if(offset > 0)
{
return offset;
}
if(temp != 1)
haystack++;
}
}
return offset;
}
| Is This Answer Correct ? | 13 Yes | 4 No |
Post New Answer View All Answers
What are the application of void data type in c?
What is the difference between local variable and global variable in c?
What is a pointer in c?
What standard functions are available to manipulate strings?
What are qualifiers and modifiers c?
Why is c known as a mother language?
Subtract Two Number Without Using Subtraction Operator
What is self-referential structure in c programming?
main() { struct s1 { char *str; struct s1 *ptr; }; static struct s1 arr[] = { {"Hyderabad",arr+1}, {"Bangalore",arr+2}, {"Delhi",arr} }; struct s1 *p[3]; int i; < BR> for(i=0;i<=2;i++) p[i] = arr[i].ptr; printf("%s ",(*p)->str); printf("%s ",(++*p)->str); printf("%s ",((*p)++)->str); }
What does c mean in standard form?
explain how do you use macro?
Explain the difference between malloc() and calloc() in c?
What is merge sort in c?
Why main is used in c?
What is signed and unsigned?