【发布时间】:2016-02-18 11:31:46
【问题描述】:
我正在使用fscanf(fp, "%d", &n) 函数从文件中读取整数。
有没有办法知道这个数字在没有循环的情况下有多少位?
【问题讨论】:
-
没有理由不使用循环。所有目前的答案都不如简单的
unsigned int digits = 1; while(n > base) { n /= base; digits++; }。使用字符串、浮点数和其他类似的废话只是糟糕的编程。你已经开始了一场关于谁能写出最糟糕的程序的竞赛,所以我认为这个问题对未来的读者有害。 -
unsigned int digits = 1; not_a_loop: if(n > base) { n /= base; digits++; goto not_a_loop; }你去。比发布的任何答案都有效 100 倍。 -
@Lundin,当然你的意思是
while(n >= base)。 (>= 与 >)。至于我,我会使用:unsigned int digits = 0; do { digits++; n /= base; } while(n); }. -
类似于stackoverflow.com/q/1068849/2410359(可能是骗子)
-
@Lundin - 你可能喜欢
int n = 1; while (n /= 10) n++;