如果我有一個數字(長),我怎樣才能將它的數字拆分成一個陣列?
示例: 4003607001000014-> [4, 0, 0, 3, 6, 0, 7, 0, 0, 1, 0, 0, 0, 0, 1, 4]。
我嘗試使用模 ( n % (10 * i)),從哪里i開始,它的值以 for 回圈的每次迭代的1倍數增加。10然后將結果添加到從 n 到 0 的陣列中,但是這樣一來,任何零都將被忽略。
uj5u.com熱心網友回復:
嘗試每次迭代將數字除以 10,這比通過增加 10 的冪來取模更簡單:
unsigned char digits[BIG_ENOUGH];
unsigned long number;
unsigned i = 0;
while (number) {
digits[i ] = number%10;
number /= 10;
}
如果您需要digits[0]存盤最高有效位而不是最低有效位,請在之后反轉陣列:
for (unsigned low = 0, high = digits-1; low < high; low , high--) {
unsigned char tmp = digits[low];
digits[low] = digits[high];
digits[high] = tmp;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/520278.html
標籤:C
下一篇:MisraC和原型C宏生成
