I pasted the code here.

as you can see, everything is in Temp, but test_output is
somehow not able to retrieve those items.
thanks for the help

#include <iostream.h>
#include <string.h>

const int LIST_LENGTH = 10;
const int STRING_LENGTH = 100;
char CHAR_ARRAY[STRING_LENGTH];
char *Temp[LIST_LENGTH];

char ** OutStr (char * In_Str, char delim);

int ParsePairs(char * str, char Left_Char, char Right_Char);
//return strlength if successful, 0 otherwise

int Parse(char *str, char delim); //normal strings

void main()
{
char *Test_Str = "\"asf,def\",<a,2>,3,{4,5}";
char **test_output;

test_output = OutStr(Test_Str, ',');
cout << "done\n";
return;
}

char **OutStr (char * In_Str, char delim)
{
//char *Temp[LIST_LENGTH];
char In_Str_Copy[STRING_LENGTH];
char Temp_Str[STRING_LENGTH];
char * Str_Ptr;
int i, j;

//first make a copy of the ctring
strcpy(In_Str_Copy, In_Str);
//strcpy(Temp_Str, In_Str);
Str_Ptr = In_Str_Copy;

//allocate memory
for (i=0; i<LIST_LENGTH; i++)
{
Temp[i] = new char[STRING_LENGTH];
Temp[i][0] = 0;
}

//parsing string

// null string
if(!In_Str)
return 0;

// string without delimiters
if(!strchr(In_Str_Copy, delim))

{
strcpy(Temp[0], In_Str_Copy);
return Temp;
}

j = 0;
int Normal_Flag = 0;
while(1) //process string
{
switch (In_Str_Copy[0])
{
case '(':
i = ParsePairs(In_Str_Copy, '(',')');
break;

case '<':
i = ParsePairs(In_Str_Copy, '<','>');
break;

case '{':
i = ParsePairs(In_Str_Copy, '{','}');
break;

case '[':
i = ParsePairs(In_Str_Copy, '[',']');
break;

case '"':
i = ParsePairs(In_Str_Copy, '"','"');
break;

default:
i = Parse(In_Str_Copy, delim);
Normal_Flag = 1;

}

//check In_Str_Copy[i], should be delim
//to be added
if(!Normal_Flag)
strncpy(Temp[j], In_Str_Copy, i+1);
else
strncpy(Temp[j], In_Str_Copy, i);

Normal_Flag = 0;

j++;

//check if this is the last character

i++;

//check delim
if(!In_Str_Copy[i])
return Temp;

if(In_Str_Copy[i] == delim)
{
i++;
}



if(In_Str_Copy[i])
{
strcpy(Temp_Str, Str_Ptr + i);
strcpy(In_Str_Copy, Temp_Str);
Str_Ptr = In_Str_Copy;
}
else
break;

}

return Temp;
}

int Parse(char *str, char delim)
{
int i = 0 ;

while (str[i] && (str[i] != delim))
i++;
return i;


}

int ParsePairs(char * str, char Left_Char, char Right_Char) //parse strings within pairs
{

if(str[0] != Left_Char)
return -1;

// search right_char
if(!strchr(str, Right_Char))
return -1;

int i = 1;

while(str[i] != Right_Char)
i++;

//str[i] = 0;

return i;
}