Código: Seleccionar todo
static char * SpaceSplit(char *pQuery, int nSpaces)
{
int i = 0;
int e = 0;
int sFounds = 0;
int magicPos = 0;
static char * strFinal = (char *)malloc(strlen(pQuery));
for(i= 0; pQuery[i] != '\0'; i++)
{
if(pQuery[i] == ' ')
{
sFounds++;
if(sFounds == nSpaces)
{
magicPos = i + 1;
break;
}
}
}
for(e = magicPos, i = 0; pQuery[e] != '\0'; e++)
{
if(pQuery[e] == ' ') { break; }
strFinal[i] = pQuery[e];
i++;
}
strFinal[i] = '\0';
return strFinal;
}
static char * trim(const char * str)
{
int strFinalPos = 0;
static char * strFinal = (char *)malloc(strlen(str));
for(int i=0; str[i] != '\0'; i++)
{
if(str[i] != ' ')
{
strFinal[strFinalPos] = str[i];
strFinalPos++;
}
}
strFinal[strFinalPos] = '\0';
return strFinal;
}
static char * char_replace(char *pSource, const char cReplace, const char newCh)
{
static char * strFinal = (char *)malloc(strlen(pSource));
for(int i=0; pSource[i] != '\0'; i++)
{
if(pSource[i] == cReplace)
{
pSource[i] = newCh;
}
}
strcpy(strFinal, pSource);
return strFinal;
}
int strfind_last_pos(const char *pStr, const char *pSearch)
{
int len = strlen(pSearch);
int founds = 0;
int sPos = 0;
int retValue = 0;
for(int i = 0; pStr[i] != '\0'; i++)
{
if(pStr[i] == pSearch[sPos])
{
founds++;
sPos++;
if(founds == len)
{
retValue = i;
break;
}
}
else {
sPos = 0;
founds = 0;
}
}
return retValue;
}
int strfind_first_pos(const char *pStr, const char *pSearch)
{
int len = strlen(pSearch);
int founds = 0;
int sPos = 0;
int retValue = 0;
for(int i = 0; pStr[i] != '\0'; i++)
{
if(pStr[i] == pSearch[sPos])
{
founds++;
sPos++;
if(founds == len)
{
retValue = i - strlen(pSearch) + 1;
break;
}
}
else {
sPos = 0;
founds = 0;
}
}
return retValue;
}
static char * GET(const char * gData)
{
char * query = getenv("QUERY_STRING");
if(query == NULL)
{
return NULL;
}
int finalMemory = 0;
int startPos = strfind_last_pos(query, gData) + 2;
for(int i=startPos; query[i] != '\0'; i++)
{
if(query[i] == '&' || query[i] == '\0')
{
break;
}
finalMemory++;
}
static char * strFinal = (char *)malloc(finalMemory);
int auxFinal = 0;
for(int e=startPos; e<=(startPos+finalMemory) - 1; e++)
{
strFinal[auxFinal] = query[e];
auxFinal++;
}
strFinal[auxFinal] = '\0';
return strFinal;
}
static char * str_replace(const char * pSearch, char *pRsearch, char *pReplace)
{
int fiPost = strfind_last_pos(pSearch, pRsearch);
int fPos = strfind_first_pos(pSearch, pRsearch);
int fLen = (strlen(pSearch) - strlen(pRsearch)) + strlen(pReplace);
static char * strFinal = (char *)malloc(fLen);
int i = 0;
int e = 0;
int c = 0;
int aux = 0;
for(i=0; i<=fPos - 1; i++)
{
strFinal[i] = pSearch[i];
}
for(e=(signed)i; e<=(signed)i+strlen(pReplace)-1; e++)
{
strFinal[e] = (signed)pReplace[aux];
aux++;
}
int aux2 = e;
for(c = (signed)fiPost + 1; c<=(signed)strlen(pSearch); c++)
{
strFinal[aux2] = pSearch[c];
aux2++;
}
strFinal[aux2] = '\0';
return strFinal;
}