如何读取char类型的整数值?

pxiryf3j  于 2023-01-25  发布在  其他
关注(0)|答案(1)|浏览(153)

我想用scanf()做一个小实验,我想从用户那里读取一个小整数(〈= 255),并将其存储在char类型中。
我做了:

char ch;
scanf("%d",&ch);

它可以工作,但我希望满足编译器的要求,而不是收到以下警告:

warning: format specifies type 'int *'
but the argument has type 'char *' [-Wformat]
scanf("%d",&ch);

你知道吗?

kpbwa7wx

kpbwa7wx1#

首先,要存储一个0 - 255的值,你不应该使用char,事实上,你不应该为了存储除字符和字符串以外的任何东西而使用char,这是因为该类型具有实现定义的符号:Is char signed or unsigned by default?
您可以:

unsigned char val;
scanf("%hhu", &val);

尽管使用stdint.h中的可移植类型通常是最佳做法:

#include <stdint.h>
#include <inttypes.h>  // (actually includes stdint.h internally)

uint8_t val; 
scanf("%"SCNu8, &val);

相关问题