gpt4 book ai didi

c - 在C中如何计算不使用/10的数字的位数?

转载 作者:行者123 更新时间:2023-11-30 16:09:38 24 4
gpt4 key购买 nike

我需要计算二进制编码的十进制的位数,例如 00111001。我不能使用典型的/10,因为它卡在最后 2 个 0 上并且不计算它们。

#include <stdio.h>
#include <stdlib.h>
void main(void) {
int bcd, digits;
printf("Input BCD number: ");
scanf_s("%d", &bcd);
for (digits = 0; (bcd / 10) != 0; digits++)
bcd /= 10;
printf("Number of digits is %d", digits+1);
getchar;
}

因此,如果我输入 1111,它会显示正确的“4”,但当我输入 0011 时,它会显示“2”,那么我该如何解决这个问题?

最佳答案

when I type 0011 it displays '2', so how do I fix that?

使用"%n"记录扫描的偏移量。

int n1;
int n2;
if (scanf_s(" %n%d%n", &bcd, &n1, &n2) == 1) {
printf("Input %d\nNumber of digits is %d\n", bcd, n2 - n1);
}

关于c - 在C中如何计算不使用/10的数字的位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59096254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com