c - 仅使用 write 函数将 char 转换为 int
问题描述
例如,我有:
int num = 23;
char s;
s = num - '0';
write(1, s, 1); // return 23
我怎样才能做到?不允许使用除 write() 之外的函数;
解决方案
要获得数字的第一位,您必须将其除以该数字以下的 10 的最高幂,然后将其添加到 的字符代码中'0'
。打印完那个数字后,从 10 的幂中得到余数,然后用下一个 10 的低幂重复这个过程。继续直到 10 的幂达到 1。
#include <unistd.h>
int main() {
int num = 235872347;
if (num < 0) {
num = -num;
write(1, "-", 1);
}
int pow10 = 1000000000; // maximum power of 10 in signed 32 bit
// first skip leading zeroes
while (num < pow10) {
pow10 /= 10;
}
for (; pow10 > 0; num %= pow10, pow10 /= 10) {
char digit = '0' + num / pow10;
write(1, &digit, 1);
}
}
推荐阅读
- html - 如何设置引导开关的 CSS 颜色?
- c# - 具有私有列表的自定义集合中的序列化问题
- git - Git:更新本地主分支而不签出
- bash - Bash:一旦达到字符限制,有没有办法要求用 read -n 按下回车键?
- rdf - 文本中的 LinkedData 链接
- flutter - Flutter:如何在 InputDecoration 的 errorText 属性中使用 if 条件?
- rust - 产生对自身的引用的迭代器
- c++ - Linux / C++:线程结束时内存未完全释放
- git - 并行管道构建导致 git 冲突
- html - 谁能告诉我为什么媒体查询之前在断点处注册而不是我的目标