gpt4 book ai didi

c - 将数组传递给函数并显示元素时出错?

转载 作者:行者123 更新时间:2023-11-30 16:10:11 25 4
gpt4 key购买 nike

C语言-Linux

我的程序上下文:读取用户输入的参数,满足要求后将参数传递给数组,并将数组传递给函数。该函数必须显示数组元素。由于某种原因,输出显示随机大数字,例如“-914536439”,这是错误的。

用户输入示例:./file 3 2 5 10 6
当前输出:数组元素为 0 0 0 -914536439 .. -914536430 (错误!)
所需的输出:按给定的方式显示数组元素,“当前数组元素为:3 5 10 6”

我认为我的 void 函数在某个地方犯了错误。如何修复此问题以便函数显示数组元素?

我的代码:

/* function to display element of modified array */
void function(int *arr)
{
int j, size;
size = sizeof(arr)/sizeof(arr[0]);

printf("Current array elements are:");
for (j=0; j < size; j++)
{
/* display array elements */
printf("%d ", arr[j]);
}
}

int main (int argc, int *argv[])
{
/* max array size is 100 */
int arr[100];

for (int i=0; i<argc; i++)
{
/*check if value of arguments is greater than value of argv[1] */
if (argv[i] > argv [1])
{
/* pass value of argument(s) to array named arr */
arr[i] = argv[i];
}
}
/* pass array arr to function */
function(arr);

/*other code*/
}

最佳答案

您的程序中有几个问题。最明显的是argv是一个char **。但是您将 argv[i] (即 char *)分配给 arr[i] (即 int)。您的编译器可能会对此发出警告。在这种情况下,要将 char* 转换为 int,可以使用 atoi()。您还想对 arr 使用不同的索引而不是 i。并且只有在发现数组元素大于第一个元素时才增加它。

if (atoi(argv[i]) > atoi(argv [1]))
{
/* pass value of argument(s) to array named arr */
arr[j] = atoi(argv[i]);
j++;
}

另一个问题是,函数中的 sizeof(arr) 只会给出整数指针的大小。您需要找到的元素数量,应将其作为第二个参数传递给函数。

关于c - 将数组传递给函数并显示元素时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58945024/

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