#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* strrstr(const char* haystack, const char* needle) {
char* result = NULL;
char* current = strstr(haystack, needle);
while (current) {
result = current;
current = strstr(current + 1, needle);
}
return result;
}
char* SubstringBetweenTwoSubstrings(const char* str, const char* suba, const char* subb) {
char* posA = strstr(str, suba);
char* posB = strrstr(str, subb);
if (posA == NULL)
return "";
if (posB == NULL)
return "";
size_t indexEndSuba = posA - str + strlen(suba);
if (indexEndSuba >= (size_t)(posB - str))
return "";
size_t length = posB - str - indexEndSuba;
char* result = (char*)malloc(length + 1);
strncpy(result, str + indexEndSuba, length);
result[length] = '\0';
return result;
}
int main() {
const char* str = "C#:C C++:Java:Python";
char* result = SubstringBetweenTwoSubstrings(str, "C#", "Java");
printf("%s\n", result);
free(result);
return 0;
}
/*
run:
:C C++:
*/