When I use following statement in the code which runs on ARM9, it does not correctly parse the IP address. I am using standard function for sscanf().
main() { unsigned char ip[16]; sscanf("255.1.1.1","%u.%u.%u.%u",&ip[0],&ip[1],&ip[2],&ip[3]); }
thanks in advance, -pjs
"I want to convert the charecters between the dots to the their integer values, hence using the %u."
You are confusing the general mathematical term "integer" - meaning a whole number (no fractional part) - with the specific 'C' data type 'int'
%u tells sprintf to return a number using the int data type, and you supply an address to tell it where to store that int.
Now, an int will be larger than a char; so, when sprintf stores its result it will start at the address you specify, and carry on from there with as many bytes as the compiler happens to use for an int - thus it will overwrite the next few elements in your char array.
Thanks a lot for the detailed answers ! I have handcoded small function then to parse the string into four ascii words and converted it to corresponding integer values, which works correctly. Thanks again for your time.