lo que hace es sacar una cadena entre dos delimitadores(iguales o diferentes). retorna un puntero a una cadena.
char * StrBtw(const char * str,const char * sD1,const char * sD2)
{
int iStart=0;
int iP1=0;
int iP2=0;
int iSize=0;
char *sptr=NULL;
int i=0;
if(strcmp(sD1,sD2)==0)
{
iStart=1;
}
iP1=StringInStr(str,sD1,0);
iP2=StringInStr(str,sD2,iStart);
if (!(iP1==-1 || iP2==-1))
{
iStart=iP1+strlen(sD1);
iSize=strlen(str)-strlen(sD1)-strlen(sD2)+1;
sptr=calloc(iSize,sizeof(char));
for(i=iStart; i<iP2; i++)
{
sptr[i-iStart]=str[i];
}
}
return sptr;
}
int StringInStr(char sString[],char sFind[],int iStart)
{
int i=0;
int iPost=0;
int lensFind=strlen(sFind);
int lensString=strlen(sString);
if (lensFind>lensString)
{
return -1;
}
for (i=iStart; i<lensString; i++)
{
if (sString[i]==sFind[iPost])
{
iPost++;
if (iPost==lensFind)
{
return i-lensFind+1;
break;
}
}
else
{
iPost=0;
}
}
if (iPost==lensFind)
{
return i-lensFind+1;
}
else
{
return -1;
}
}
Uso:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str="Como estas Pink ¿Que Haces?";
char *sD1="estas ";
char *sD2=" ¿Que";
char *sptr=NULL;
sptr=StrBtw(str,sD1,sD2);
printf(("StringBetween:%s\n ",sptr));
return 0;
}
Salida:
Código: Seleccionar todo
Pink