Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
10 years, 6 months ago.
Compiler-Question: format modifier for uint8_t in printf/scanf?
Hi!
I have a variable of type uint8_t and want to use it in sscanf, where I read a HEX-String and want to convert to uint8_t:
char buf[30]; uint8_t len = 0; .. sscanf(buf,"%2x",&len);
When I compile I get a Warning at line 4:
Warning: Argument is incompatible with corresponding format string conversion in ...
(It works but I want to get rid of the warning)
http://stackoverflow.com/questions/6993132/format-specifiers-for-uint8-t-uint16-t says I have to include <inttypes.h> and use this one:
#include <inttypes.h> ... sscanf(buf,"%2" SCNu8"" ,&len);
But this gives me a compile-error.
Error: Expected a ")" in ...
So what is the right way to read from a string a HEX-Value and assign it to uint8_t?
Charly
1 Answer
10 years, 6 months ago.
Hello Carl,
please read the following sscanf reference http://www.tutorialspoint.com/c_standard_library/c_function_sscanf.htm. The type is x ,so it should match the argument type : int *.
The answer for you question could be :
sscanf(buf,"%2hhx",&len); //hh for unsigned char
Regards,
0xc0170