try this one...
Code:
int extract(char *src,char *dest,int dest_sz) {
char *psrc =src;
char *pdst = dest;
while(*psrc && *psrc!='(') {
psrc++;
}
if(!*psrc) return -1; /*ERROR! '(' not found*/
psrc++;
while(*psrc && *psrc!=')') {
if(pdst - dest >=dest_sz)
break;/*dest is out of memory*/
*pdst = *psrc;
psrc++;
pdst++;
}
*pdst = '\0';
return pdst - dest; /*return the strlen of the dest*/
}
and this below is upgraded version
with different delimiters:
Code:
int extract(char *src,char *dest,char dlm[3],int dest_sz) {
char *psrc =src;
char *pdst = dest;
while(*psrc && *psrc!=dlm[0]) {
psrc++;
}
if(!*psrc) return -1; /*ERROR! '(' not found*/
psrc++;
while(*psrc && *psrc!=dlm[1]) {
if(pdst - dest >=dest_sz)
break;/*dest is out of memory*/
*pdst = *psrc;
psrc++;
pdst++;
}
*pdst = '\0';
return pdst - dest; /*return the strlen of the dest*/
}
Code:
/*TEST*/
int main(void) {
char str[] = "This is a (test) {string}";
char dest[200];
int len=0;
len = extract(src,dest,sizeof(dest));
printf("\"%s\" -> \"%s\"\n",str,dest);
len = extract(src,dest,"{}",sizeof(dest));
printf("\"%s\" -> \"%s\"\n",str,dest);
}