c - scanf ("%d", char*) - char-as-int 格式字符串?

标签 c csv format string-formatting

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/

相关文章:

c - 使用 fscanf 读取逗号分隔的 double

java - 使用 CSV 文件更新 mongoDB 集合

c++ - 谁能告诉我我用getline格式化(cpp)出错了

Python 获取 MAC 地址的正常 HEX 格式

c - 如何返回指向 C 结构体的指针...?

c - 如何在 Linux 应用程序中获取有关以太网的统计信息?

c++ - 仅 header 库中的全局变量

c - 某些 C 函数如何接受空参数?

.net - 跳过 FileHelper 中的列

java - 如何将数字格式化为相同数量的数字,用 0 填充?