function start() { char** fields; fields = (char**)malloc(9 * sizeof(char*)); fill(fields); free(fields); } function fill(char** fields) { strtok_ptr = strtok(buf, delims); fields_ret[i++] = strtok_ptr; fprintf(stderr,"strtok_ptr = %s\r\n", strtok_ptr); while( strtok_ptr != NULL ) { if( (strtok_ptr = strtok(NULL, delims)) != NULL ) { fprintf(stderr,"strtok_ptr = %s\r\n", strtok_ptr); // % means no value if( strcmp(strtok_ptr, "%") == 0 ) fields_ret[i++] = ""; else fields_ret[i++] = strtok_ptr; } } }