C++从键盘读入一个0-255范围的整数,存成unsigned char型,应该怎么实现?

当使用%d时,出现栈溢出。当使用%c时,只能正确读入0-127……

先读入一个整数,判定是否在0~255内,在就存为unsigned char型,不在范围就忽略
int n;
unsigned char unch;
scanf("%d",n);
if(n>=0 && n<=255)
{
unch=n;
}追问

感觉感谢你的回答。你提供的答案可以解决问题,但是我想知道是否有更简洁的解决办法?

追答

更简洁的?那我就无能为力了,除非有一个类型天生就是0~255范围,不过貌似C/C++不存在这种类型。
哦,不对,有一种是0~255,byte类型,一个字节是8位,正好是符合你要求的,你可以去试试,不过不见得比用整形简洁。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-05
int value = -1;
unsigned char t;
if(scanf("%d",&value) != 1) {
printf("scanf fail\n");
} else {
printf("scanf value=%d\n",value);
t = (unsigned char)value;
printf("t=%c(%d)\n",t,t);
}
相似回答