rendered paste body#include <stdio.h>#include <string.h>#include <new>using namespace std;int scount_chars(char *str, char c) { int i; int num_chars = 0; for (i = 0; i < strlen(str); i++) { num_chars += (str[i] == c) ? 1 : 0; } return num_chars;}int strnsplit(char *str, char c, int n, char ***dest) { int i = 0; char *token; char delim[2]; /* make a copy, because strtok modifies the original */ char *str2 = strdup(str); /* strtok takes a string as a delimiter */ delim[0] = c; delim[1] = '\0'; int nc = scount_chars(str, c); n = (n > nc) ? nc : n; if (*dest) { delete [] *dest; } try { *dest = new char*[n+1]; } catch (std::bad_alloc) { *dest = 0; } for (token = strtok(str2, delim); token; token = strtok(NULL, delim)) { *dest[i] = strdup(token); i++; } return i;}int main() { /* will want to strip the ';' before running split */ char foo[50] = "abcdabcd,efgh,ijkl,mnop"; char **bar = 0; strnsplit(foo, ',', 4, &bar); int i; for (i=0; i<4; i++) { printf("%s\n", bar[i]); } return 0;}OUTPUT:bhearsum@wesley:~/tmp$ ./split3abcdabcd(null)(null)(null)