gpt4 book ai didi

c - 使用 C 中的 scanf 函数获取数组的值

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

我有一个函数定义,它通过用户使用 scanf 获取数组的值。这就是我所拥有的

void readInArray(int *arr, int size) {
int i;
printf("Enter your list of numbers: ");
for (i = 0; i < size; i++) {
scanf("%f", arr[i]);
printf("%d\n", arr[i]);
}
}

当我尝试打印数组时,我在 scanf 行中收到错误,提示“格式指定类型“float *”,但参数类型为“int””。我尝试将 %f 更改为 %d,以便 scanf和 printf 具有相同的占位符

void readInArray(int *arr, int size) {
int i;
printf("Enter your list of numbers: ");
for (i = 0; i < size; i++) {
scanf("%d", arr[i]);
printf("%d\n", arr[i]);
}
}

但我仍然遇到同样的错误。我该如何解决这个问题?

最佳答案

函数 scanf() 将来自 stdin 的输入放置到您指定的位置。您在 scanf() 中提供的第二个参数不是指示用户输入应去往何处的指针 - arr[i] 是一个整数。格式化后的第二个参数需要是一个指针。

所以,您想要以下内容:

scanf("%d", (arr+i));

scanf("%d", &arr[i]);

对于第一种情况,将数组作为参数传递与将指针传递给数组所保存的连续内存块中的第一个元素相同。增加一个整数将带您到下一个元素。

第二种情况是首先提供数组中第 i 个元素的值,arr[i],然后&符号给出该元素在内存中所在的地址 - 所以指针。

关于c - 使用 C 中的 scanf 函数获取数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44789110/

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