/** * split.c * Split strings into component parts. */ // +---------+-------------------------------------------------------- // | Headers | // +---------+ #include #include "split.h" #ifdef CTEST #include #include #endif // CTEST // +-----------+------------------------------------------------------ // | Functions | // +-----------+ void split (char *str, char *sep, char *parts[], int n) { int i; char *tmp; int seplen = strlen (sep); for (i = 0; i < n; i++) { tmp = strstr (str, sep); if (tmp == NULL) { parts[i] = strdup (str); str += strlen (str); } else { int size = strlen (str) - strlen (tmp); parts[i] = strndup (str, size); str = tmp + seplen; } } // for } // split // +-------------------+---------------------------------------------- // | Command-Line Test | // +-------------------+ #ifdef CTEST void ctest (char *str, char *sep, int n) { char *strings[n]; int i; split (str, sep, strings, n); printf ("split (\"%s\", \"%s\", strings, %d)\n", str, sep, n); for (i = 0; i < n; i++) printf (" strings[%d] = \"%s\"\n", i, strings[i]); } // ctest int main (int argc, char *argv[]) { ctest (argv[1], argv[2], atoi (argv[3])); return 0; } // main #endif // CTEST