I'm trying to use this code to read values between 0 to 255 (unsigned char
).
#include<stdio.h> int main(void) { unsigned char value; /* To read the numbers between 0 to 255 */ printf("Please enter a number between 0 and 255 \n"); scanf("%u",&value); printf("The value is %u \n",value); return 0; }
I do get the following compiler warning as expected.
warning: format ‘%u’ expects type ‘unsigned int *’, but argument 2 has type ‘unsigned char *’
And this is my output for this program.
Please enter a number between 0 and 255 45 The value is 45 Segmentation fault
I do get the segmentation fault while running this code.
What is the best way to read unsigned char
values using scanf
?
unsigned char ch = 'a'; Initializing an unsigned char: Here we try to insert a char in the unsigned char variable with the help of ASCII value. So the ASCII value 97 will be converted to a character value, i.e. 'a' and it will be inserted in unsigned char.
unsigned char ch = 'n'; Both of the Signed and Unsigned char, they are of 8-bits. So for signed char it can store value from -128 to +127, and the unsigned char will store 0 to 255. The basic ASCII values are in range 0 to 127.
Input an unsigned integer value using scanf() in C The data type to declare an unsigned integer is: unsigned int and the format specifier that is used with scanf() and print() for unsigned int type of variable is "%u".
This is the code: char ch; printf("Enter one char"); scanf("%c", &ch); printf("%c\n",ch);
The %u
specifier expects an integer which would cause undefined behavior when reading that into a unsigned char
. You will need to use the unsigned char
specifier %hhu
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With