我需要对二进制编码的十进制数进行计数,例如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”,那么如何解决呢?
当我输入0011时,它显示为“ 2”,那么该如何解决?
使用"%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); }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。