The section of the function findWords() where I determine if a word is a number or not, increments the string length of the 'word'. This only happens if the word is 4 character in length (which is the defined max chars in a word), and the word following it is a number. I've looked through my code alot of times and I can't seem to figure out why this is happening.Code:// Structure declaration and type definition struct wordsRec { int type; // 0 represents non-number, 1 represents numbers. char value[4]; }; typedef struct wordsRec Words; int findWords(char *string, Words *outputWords) { int i; int numberOfWords = 0; int currentChar = 0; int length; int extraSpaceCheck = 1; // Catches multiple blank spaces printf("strlen(string): %d\n", strlen(string)); length = strlen(string); // Sorts the string into seperate 'words' for (i = 0; i < length; i++) { if (string[i] != ' ') { extraSpaceCheck = 0; if (currentChar == 4) { fprintf(stderr, "Exceeded word limit. Program terminating.\n"); exit(1); } outputWords[numberOfWords].value[currentChar++] = string[i]; if (i == length - 1) outputWords[numberOfWords].value[currentChar] = '\0'; } else if (extraSpaceCheck == 0) { outputWords[numberOfWords].value[currentChar] = '\0'; currentChar = 0; numberOfWords++; extraSpaceCheck = 1; } } numberOfWords++; // Determines if the 'words' are integers or characters for (i = 0; i < numberOfWords; i++) { outputWords[i].type = 1; length = strlen(outputWords[i].value); printf("length: %d\n", length); for (currentChar = 0; currentChar < length; currentChar++) { if (!(outputWords[i].value[currentChar] == '-' && currentChar == 0) && !(outputWords[i].value[currentChar] >= 48 && outputWords[i].value[currentChar] <= 57)) { outputWords[i].type = 0; break; } } // printf("str: %s, %d | %s, %d\n", outputWords[i].value, strlen(outputWords[i].value), outputWords[i - 1].value, strlen(outputWords[i - 1].value)); } // Fixes the 'suddenly changing strlen' problem; artificial solution for (i = 0; i < numberOfWords; i++) if (strlen(outputWords[i].value) > 4) outputWords[i].value[4] = '\0'; // Returns the number of words return numberOfWords; }
Any help would be appreciated, and if my code is unclear, I'd be more than happy to elaborate
Thanks in advance.



LinkBack URL
About LinkBacks



