char-as-number 的格式字符串修饰符是什么?
我想使用 sscanf 将一个不超过 255(实际上少得多)的数字读入 unsigned char 类型变量。
使用典型
char source[] = "x32";
char separator;
unsigned char dest;
int len;
len = sscanf(source,"%c%d",&separator,&dest);
// validate and proceed...
我收到了预期的警告:sscanf 的参数 4 是 char*、int* 类型。
据我了解规范,char 没有修饰符(例如 %sd 表示短字符,或 %lld 表示 64 位长字符)
- 有危险吗? (溢出只是溢出(翻转)变量还是会在分配的空间之外写入?)
- 有没有比分配临时 int 变量更漂亮的方法来实现这一点?
- ...或者您会建议一种完全不同的方法吗?
最佳答案
你可以在glibc的scanf()
下使用%hhd
,MSVC 似乎不支持直接将整数存储为 char(有关支持的转换的更多信息,请参阅 MSDN scanf Width Specification)
关于c - scanf ("%d", char*) - char-as-int 格式字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3036396/