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.
Answers were Sorted based on User's Feedback
Answer / 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 |
Answer / amixcode
Hi "VadivelT" can u please why there is "-32" in the answer ??
i googled lot but didnt found the aswer.
| Is This Answer Correct ? | 2 Yes | 0 No |
Answer / amaresh
#include<stdio.h>
int stripos(char* haystack, char* needle, int offset );
void main()
{
char *a1, *a2;
int iPostn = 0;
printf("ENTER THE HAYSTACK STRING:\n");
gets(a1);
printf("\nENTER THE STRING - TO BE SEARCHED\n");
gets(a2);
iPostn = stripos(a1, a2, iPostn);
if(iPostn > 0)
printf("\nSTRING STARTS AT THE POSITION:
%d\n", iPostn);
else
printf("\nSTRING NOT FOUND: %d\n", iPostn);
printf("\n");
}
int is_match(char a, char b)
{
char c1, c2;
if( a >= 'A' && a <= 'Z')
c1 = a + 32;
else
c1 = a;
if( b >= 'A' && b <= 'Z')
c2 = b + 32;
else
c2 = b;
if(c1 == c2)
return 1;
else
return 0;
}
int stripos( char* haystack, char* needle, int offset )
{
int i = 0, j = 0, pos = -1;
if(*haystack == '\0' || *needle == '\0')
return -1;
while(haystack[i + j] != '\0')
{
if(is_match(haystack[i + j],needle[j]))
{
pos = i + 1;
j++;
}
else
{
i++;
pos = -1;
j = 0;
}
if(needle[j] == '\0')
return pos;
}
return -1;
}
| Is This Answer Correct ? | 1 Yes | 0 No |
the process of defining something in terms of itself is called (or) in C it is possible for the functions to call themselves. A function called a) nested function b) void function c) recursive function d) indifinite function
a=0; while(a<5) printf("%d\n",a++); how many times does the loop occurs? a.infinite b.5 c.4 d.6
to write a program, that finds the minimum total number of shelves, including the initial one, required for this loading process. The packets are named A, B, C, D, E …….. Any numbers of packets with these names could be kept in the shelf, as in this example: [ZZLLAAJKRDFDDUUGGYFYYKK]. All packets are to be loaded on cars. The cars are lined in order, so that the packets could be loaded on them. The cars are also named [A, B, C, D, E,………….].
Hi how many types of software editions are there and their difference (like home editions, enterprise, standard etc) can u please help me
where does it flourished?
While compiling a c program,graphics header files are not including in my program..eg: <graphics.h>,what may be the problem...is there any environment settings exists.
How to write a code for reverse of string without using string functions?
Define Array of pointers.
write a C code To reverse a linked list
Tell me when is a void pointer used?
Reverse a string word by word??
Write a routine that prints out a 2-D array in spiral order!