【发布时间】:2019-03-07 15:29:58
【问题描述】:
我有下面的代码,用户在其中输入他们的卡号,每个数字都存储为变量数组digits[] 中的一个元素。
我想要实现的是在 for 循环存储完所有数字后停止它,但是,我正在努力根据输入的卡号长度设置循环。
我已经尝试使用存储在可变长度中的sizeof(cardNo) 并将长度设置为循环条件的以下代码。
假设用户输入 1234,我在运行以下代码时收到的结果是 43210000,而我正在寻找的只是 4321。
如果我将 int digits 设置为 digits[4] 并将循环条件设置为
有什么想法或建议吗?
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");
【问题讨论】:
-
分配最大值。同样,在本练习的每个问题中(大约有数百个问题),我建议使用数字的字符串表示而不是数值,除非有严格的要求。
-
第一:使用malloc来动态分配内存。第二:
length应该是size_t类型。我也认为cardNo除非你想要负数句柄。 -
sizeof(cardNo)不是你想的那样。 -
@IgorGalczak 不一定是
size_t。 -
@StaceyGirl 我写应该是因为:wiki.sei.cmu.edu/confluence/display/c/…
标签: c