我有下面的代码,用户在其中输入他们的卡号,每个数字都作为一个元素存储在变量数组 digits[]
中。
我想要实现的是在存储所有数字后停止 for
循环,但是,我很难根据输入的卡号长度设置循环。
我尝试了以下代码,使用存储在可变长度中的 sizeof(cardNo)
并将长度设置为循环条件。
假设用户输入 1234,我在运行以下代码时收到的结果是 43210000,而我要查找的只是 4321。
如果我将 int digits
设置为 digits[4]
并将循环条件设置为 < 4 它将给我 4321 但显然这限制了我只能输入 4 位数字的用户事实上,我希望它是灵活的,即如果他们输入 6 位数字,它将给我 123456 如果他们输入 8 位数字,它将给我 12345678 等。
有什么想法或建议吗?
long cardNo = get_long("Enter Card Number: ");
int length = sizeof(cardNo);
int count = 0;
int digits[length];
for (int i = 0; i < length; i++) {
digits[i] = cardNo % 10;
cardNo /= 10;
printf("%i\n", digits[i]);
}
printf("\n");
最佳答案
一个数的长度是基于它的以 10 为底的对数:
#include <math.h> //log10
....
int len = log10(cardNo) + 1;
...
不要忘记链接数学库(gcc ... -lm
)
关于C语言根据用户输入的位数确定数组的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55047405/