You dont return a "char**" instead pass a "char[][1024]" into one of the arguments.
Code:
#include <string.h>
#include <stdio.h>
int SplitString(const char* in, const char* tokens, char out[][1024], int outCount);
int main(int argc, char* argv[])
{
char splitStrings[5][1024];
//5 is the maximum number of strings the output array can hold
int count = SplitString("Test|Hello|Blah", "|", splitStrings, 5);
for(int i = 0; i < count; ++i)
printf("%s\n", splitStrings[i]);
return 0;
}
int SplitString(const char* in, const char* tokens, char out[][1024], int outCount)
{
char tempChar[0xFFFF];
int count = 0;
strncpy(tempChar, in, sizeof(tempChar));
char* tok = strtok(tempChar, tokens);
while(count < outCount && tok)
{
strncpy(out[count++], tok, sizeof(*out));
tok = strtok(NULL, tokens);
}
return count;
}