Hi all, I should have signed up here about a year ago, as I could use help from time to time.
My current issue is that the following function if 'NUL', 'ETK' or 'NAK' are found in a string (containing up to 1500 characters), the function is to return -1 and a signal[] string is to have "NOT-VALID."
The issue I am having is the return value not being -1 but 4294967295 and the signal string even though it appears to be correct isnt' (I think i may have to do with '\0'.
I've tried casting, signed long, etc but nothing seems to work and I don't understand why.
Yes I know the code is crappy, but I'm still a student. I'd appreciate any help I can get.
Thanks.
Code:long analyze(const char rawData[ ], char signal[ ], int frequency, int a, int b) { long rv = 0,i = 0,st = 0; int found = 0; int invalid = 0; while(rawData[i] != '\0' && invalid != 1) { if (rawData[i] >= frequency + 48 && rawData[i] <= 57) { if (rawData[i+61] == rawData[i]) { if (rawData[i+122] == rawData[i]) { found = 1; i += 123; } } } if (found) { switch(rawData[i]) { case 'E': if (rawData[i+1] == 'T' && rawData[i+2] == 'X') { rv = -1; strcpy(signal, "NON-SEQUITOR"); invalid = 1; } break; case 'N': if (rawData[i+1] == 'U' && rawData[i+2] == 'L') { rv = -1; strcpy(signal, "NON-SEQUITOR"); invalid = 1; } break; case 'A': if (rawData[i-1] == 'N' && rawData[i+2] == 'K') { rv = -1; strcpy(signal, "NON-SEQUITOR"); invalid = 1; } break; case '<': if (rawData[i+1] == '<') signal[st] = rawData[i + 2] - frequency; break; case '>' : if(rawData[i + 1] == '>') signal[st] += rawData[i + 2] + frequency; break; case ' ': signal[st] = ' '; st++; while(rawData[i + 1] == ' ') i++; break; case '\0': signal[st] = '\0'; break; default: if(rawData[i] >= a && rawData[i] <= b) { signal[st] = rawData[i]; st++; rv = strlen(signal); } break; } } i++; } return rv; }