gpt4 book ai didi

c - 传递给函数的变量未设置为我分配给它的值

转载 作者:行者123 更新时间:2023-12-04 11:00:55 25 4
gpt4 key购买 nike

为了返回给定数字左边的第 i 个数字,我创建了这个函数:

int ith(unsigned long x, int i)
{
int count=0;
unsigned long y = x;

do
{
y /= 10;
count++;
} while (y > 0);
if (i > count)
return -1;
count -= i;
while (count > 0)
{
x /= 10;
count--;
}
return x % 10;

}

但是,当函数的输入为 2,2 时。函数完成需要很长时间;所以我查看了调试器,发现 count==54353453count 从未收到我分配给他的 0

编辑这是我的其余代码,一些建议可能是此错误的根源。

int main()
{
int x, i,result;
do
{
printf("Enter a number and the digit you want to retrieve.\nEnter a negative number to exit\n");
scanf("%ul %d", &x, &i);
if (x<0)
{
printf("Operation Aborted.. Exiting....\n");
break;
}
else
{
result = ith(x, i);
if (result == -1)
{
printf("Error: There are no such amount of digits to retrieve from that location\n");
continue;
}
printf("The %dth digit of the number %ul is %d\n", i, x, result);
}

} while (x >= 0);
}

最佳答案

这一行

scanf("%ul %d", &x, &i);

x 中使用了错误的扫描说明符。

因为 x 被定义为 int,所以它必须是

scanf("%d %d", &x, &i);

或者您将 x 定义为 unsigned long 那么它必须是

scanf("%lu %d", &x, &i);

同样的问题在这里:

printf("The %dth digit of the number %ul is %d\n", i, x, result);

关于c - 传递给函数的变量未设置为我分配给它的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31741223/

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