sscanf(buffer, "%d", &var1_1byte);
in the above case, var1_1byte is uint8_t (ie 1 byte char variable). the "%d" in sscanf resulted to writing of multiple bytes (notice that '%d' is for 'int') which inturn cleared the adjacent bytes of ram at address &var1_1byte.
thus, var1_1byte, var2_1byte got modified. checking the .map file i confirmed the error and realized the mistake.
i used '%d' instead of '%c' so that ascii value in buffer is converted to integer (actually wanted to convert to hex).
Ignorant. (Sic).
luckily i could trace the error in not more than 5 minutes. a newbie may have consumed more time hence thought of bringing to the notice of others.
I've never even considered using sscanf in an embedded (non-Linux) project. Always preferred to roll my own.
"Always preferred to roll my own"
So what's your preferred approach?
Maybe a State Machine parser?
Specific functions for specific data types.
I've yet to find a non-(Linux or similar) situation where I need to be able to interpret every data format supported by sscanf. And if I did, I'd then question the suitability of the chosen platform.