Question
Answer and Explanation
To find the index of a substring within a string in C, you can use the strstr() function along with some basic pointer arithmetic. The strstr() function locates the first occurrence of a substring within another string.
Here's how you can do it:
1. Include Necessary Header:
- First, you need to include the string.h header file which contains the strstr() function.
2. Use strstr() Function:
- The strstr() function has the following signature:
char strstr(const char haystack, const char needle);
- It takes two arguments: haystack is the string in which you search, and needle is the substring you are looking for.
- If needle is found within haystack, it returns a pointer to the first character of the found substring. Otherwise, it returns NULL.
3. Calculate the Index:
- If strstr() returns a non-NULL pointer, you can calculate the index by subtracting the base address of the haystack string from the pointer returned by strstr().
4. Handle Not Found Scenario:
- Remember to check for NULL return value from strstr(), and provide an appropriate handling if the substring is not found.
5. Example Implementation:
Here's a C code example:
#include <stdio.h>
#include <string.h>
int findSubstringIndex(const char haystack, const char needle) {
char ptr = strstr(haystack, needle);
if (ptr == NULL) {
return -1; // Substring not found
}
return ptr - haystack; // Calculate the index
}
int main() {
const char text = "This is a sample string for substring search.";
const char sub = "sample";
int index = findSubstringIndex(text, sub);
if (index != -1) {
printf("Substring found at index: %d\\n", index);
} else {
printf("Substring not found\\n");
}
const char sub2 = "notpresent";
int index2 = findSubstringIndex(text, sub2);
if (index2 != -1) {
printf("Substring found at index: %d\\n", index2);
} else {
printf("Substring not found\\n");
}
return 0;
}
6. Explanation of the Code:
- The findSubstringIndex function takes the haystack string and needle substring as inputs.
- It calls strstr() to find the substring.
- If the substring is found, the function calculates the index by pointer subtraction and returns it.
- If the substring is not found, it returns -1.
By understanding the strstr() function and pointer arithmetic, you can easily find the index of a substring within a string in C.