#include <stdio.h> #include <stdlib.h> #include "strings_utils.h" int main(int argc, char *argv[]) { struct fields fd; int n, i, crash, size; char *st; crash = 0; if (argc == 1) { crash = 1; } else { if (argc != 3) { fprintf (stdout, "\nUsage s_split_exact.test string delimitor\n"); return 1; } } if (!crash) { n = s_split_exact(argv[1], argv[2], &fd); if (n == -1) { fprintf (stdout, "\nCan not allocate memory\n"); return 1; } for (i=0; i<fd.number_of_fields; i++) { fprintf (stdout, "\n-> %s", fd.tabs[i]); } free_fields(&fd); fprintf (stdout, "\n\n"); return 0; } while (1==1) { size = (rand() % 1024) + 1; st = (char*) malloc ((size+1) * sizeof(char)); if (st == NULL) { fprintf (stdout, "\nCan not allocate memory for string\n"); return 1; } for (i=0; i<size; i++) { if (rand() % 2) { st[i] = ';'; } else { st[i] = 'A' + rand() % 10; } } st[size] = 0; fprintf (stdout, "%d: [%s]\n", size, st); fflush(stdout); n = s_split_exact(st, ";", &fd); if (n == -1) { fprintf (stdout, "\nCan not allocate memory for s_split_exact\n"); return 1; } for (i=0; i<fd.number_of_fields; i++) { fprintf (stdout, "\n-> %s", fd.tabs[i]); } fprintf (stdout, "\n\n"); free_fields(&fd); free (st); } return 0; }