//parseSet.c //John T. Rine //October 15, 2011 #include "set.h" #include set parseSet(char *setInput) { int i, count = 0; char **rowPtr = NULL; int stringCharacterPosition = 0; int elementNumber = 0; int elementCount = 0; int elementCharacterCount = 0; int oldElementCharacterCount = 0; int oldStringCharacterPosition = 0; set returnSet; if(checkSetNotation(setInput) == 0) exit(1); elementCount = occurrences(setInput, ',') + 1; rowPtr = malloc(sizeof(char *) * elementCount); while(*(setInput + stringCharacterPosition) != '\0') { if(*(setInput + stringCharacterPosition) == '{') stringCharacterPosition++; oldElementCharacterCount = elementCharacterCount; oldStringCharacterPosition = stringCharacterPosition; while(*(setInput + stringCharacterPosition) != ',' && *(setInput + stringCharacterPosition) != '}') { elementCharacterCount++; stringCharacterPosition++; } *(rowPtr + elementNumber) = malloc(sizeof(char) * (elementCharacterCount + 1)); count = 0; while(*(setInput + oldStringCharacterPosition) != ',' && *(setInput + oldStringCharacterPosition) != '}') { *(*(rowPtr + elementNumber) + count) = *(setInput + oldStringCharacterPosition); oldStringCharacterPosition++; count++; } *(*(rowPtr + elementNumber) + count) = '\0'; elementCharacterCount = 0; elementNumber++; stringCharacterPosition++; } returnSet.setPtr = rowPtr; returnSet.numberOfElements = elementNumber; return returnSet; }