【发布时间】:2010-06-14 10:14:27
【问题描述】:
char-as-number 的格式字符串修饰符是什么?
我想使用 sscanf 将一个不超过 255(实际上少得多)的数字读入无符号字符类型变量。
使用典型
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 变量更漂亮的方法来实现这一点?
- ...或者您会建议完全不同的方法吗?
【问题讨论】:
-
我不太清楚,为什么在以字符形式阅读时使用
%d。 -
@Lucas:在内存受限的环境中读取少量数字。使用 int 会很浪费。
标签: c csv format string-formatting