gpt4 book ai didi

c - 读取以零开头的 int 并将其存储到 C 中的数组中

转载 作者:太空宇宙 更新时间:2023-11-04 01:56:01 25 4
gpt4 key购买 nike

我想读取一个数字并将其存储在一个数组中,例如,
号码:0600
存储后:

array[0] = 0,
array[1] = 6,
array[2] = 0,
array[3] = 0

这些是我的功能:

int main ()
{
int comb[20];
printf ("Combination: ");
scanf ("%d", &seq);
read_sequence (comb, seq);

//Just testing
printf ("%d\n", comb[3]);
printf ("%d\n", comb[2]);
printf ("%d\n", comb[1]);
printf ("%d\n", comb[0]);

for (i = 0; i < 6; i++)
{
printf ("%d ", comb[i]);
}
}

int number_of_digits (int n)
{
if (n < 10) return 1;
if (n < 100) return 2;
if (n < 1000) return 3;
if (n < 10000) return 4;
if (n < 100000) return 5;
if (n < 1000000) return 6;
if (n < 10000000) return 7;
if (n < 100000000) return 8;
if (n < 1000000000) return 9;
return 10;
}

int power (int b, int a) // I don't want to use pow()
{
int i = 0, result = 1;

for (i = 0; i < a; i++)
{
result = result * b;
}

return result;
}

void read_sequence (int comb[], int seq)
{
int n = 0, i = 0, k = 0;

n = number_of_digits (seq);
n = n - 1;

for (i = n; i >= 0; i--)
{
if (i != n) comb[i] = (seq / power (10, k)) % 10;

else if (i == n) comb[i] = (seq % 10);

k++;
}
}

代码在使用不以零开头的数字时工作正常,但出于某种我看不到的原因,它没有将我的 int 的第一个零存储到数组中,这就是它显示的内容:

组合:0900
1966227384
0
0
9
9 0 0 1966227384 6422252 1965910434

与其他号码:

组合:9876
6
7
8
9
9 8 7 6 6422252 1965910434

有人可以帮我吗?

最佳答案

使用 scanf("%d", ...) 不保留文本输入 - 仅保留数值。不会“记住”前导零。

使用 fgets() 读取该行,然后解析它的数字。

#define N 20

int main (void) {
int comb[N];
printf ("Combination: ");
char buf[N*2 + 2]; // use a generous read buffer
if (fgets(buf, sizeof buf, stdin) == NULL) return -1;
char p = buf;
if (*p == '-' || *p == '+') p++;
int i;
for (i = 0; i < N; i++) {
if (*p < '0' || *p > '9') {
break;
}
comb[i] = *p - '0';
}

for (int j = 0; j < i; j++) {
printf ("%d ", comb[j]);
}
return 0;
}

要查找 int 中的数字,只需重复除以 10。

int number_of_digits(int n) {
int count = 0;
do {
count++;
n /= 10;
} while (n);
return count;
}

关于c - 读取以零开头的 int 并将其存储到 C 中的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34234403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com