c – 对于uint32_t和其他stdint类型,atoi或strtoul相当于什么?

c – 对于uint32_t和其他stdint类型,atoi或strtoul相当于什么?,第1张

概述我正在寻找标准函数将字符串转换为 stdint.h整数,如 int i = atoi("123");unsigned long ul = strtoul("123", NULL, 10);uint32_t n = mysteryfunction("123"); // <-- ??? 有两个常规选项:strto [iu] max,然后检查值是否适合较小的类型,或切换到sscanf. C标准在< 我正在寻找标准函数将@R_403_5678@为 stdint.h整数,如
int i = atoi("123");unsigned long ul = strtoul("123",NulL,10);uint32_t n = mysteryfunction("123"); // <-- ???
解决方法 有两个常规选项:strto [iu] max,然后检查值是否适合较小的类型,或切换到sscanf. C标准在< inttypes.h>中定义了整个宏系列.扩展到< stdint.h>的适当转换说明符类型. uint32_t的示例:
#include <inttypes.h>#include <stdio.h>int main(){    uint32_t n;    sscanf("123","%"SCNu32,&n);    printf("%"PRIu32"\n",n);    return 0;}

(在uint32_t的情况下,strtoul溢出检查也适用于uint32_t,因为unsigned long至少为32位宽.对于uint_least32_t,uint_fast32_t,uint64_t等,它不会可靠地工作)

编辑:正如Jens Gustedt在下面所说,这并不能提供strtoul的完全灵活性,因为你无法指定基础.但是,仍然可以分别用SCNo32和SCNx32获得基数8和基数16.

总结

以上是内存溢出为你收集整理的c – 对于uint32_t和其他stdint类型,atoi或strtoul相当于什么?全部内容,希望文章能够帮你解决c – 对于uint32_t和其他stdint类型,atoi或strtoul相当于什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1256107.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存