/* * This utility will take a string of real numbers seperated by commas and * put them in an array. * * Don McCormick */ #include "defn.h" #define ERROR1 "Only 9 line sizes allowed" #define ERROR2 "Too many decimal points in number" #define ERROR3 "line size specification incorrect" #define ERROR4 "Max no of characters for each line size is 5" changesizes(sizebuf) char sizebuf[50]; { int i; int j = 0; int k = 0; int DECIMAL = 0; float number; char numbuf[5]; for (i = 0; i < 50; i++) { if (sizebuf[i] == ',' || sizebuf[i] == NULL) { if ((number = atof(numbuf)) >= 0.01 && number <= 10) pen_size[j] = number; /* Put number in array */ else fprintf(stderr, "Warning: line size too large ignored \n"); if (sizebuf[i] == NULL) return; if (j++ > 8) { fprintf(stderr, "Error: %s\n", ERROR1); exit(1); } for (k = 0; k < 5; k++) numbuf[k] = NULL; /* Clear number buffer */ k = 0; DECIMAL = 0; /* One decimal per number */ while (sizebuf[i + 1] == ',' && sizebuf[i + 1] != NULL) i++; /* Get rid of extra commas */ } else { if ((sizebuf[i] >= '0' && sizebuf[i] <= '9') || sizebuf[i] == '.') { if (sizebuf[i] == '.') { if (DECIMAL == 1) { fprintf(stderr, "Error: %s\n", ERROR2); exit(1); } DECIMAL = 1; } numbuf[k] = sizebuf[i]; } else { fprintf(stderr, "Error: %s\n", ERROR3); exit(1); } if (k++ > 5) { fprintf(stderr, "Error: %s\n", ERROR4); exit(1); } } } }