我仍然不知道为什么下面的代码无法正常工作。当我跑步时,它只让我输入一次。有人可以告诉我如何解决它吗?谢谢。
我正在使用dev C编写代码,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
void testFun(int *arr) {
int i;
for(i=0;i<2;i++) {
printf("%d element: ", i+1);
scanf("%d", *arr+i);
}
}
int main() {
int arr[2];
testFun(arr);
}
它只允许我输入一次,而我想要的结果是两次。
答案 0 :(得分:1)
scanf("%d", *arr+i);
您需要一个指向数组第ith个元素的指针
所以
scanf("%d", &arr[i]);
应该工作
答案 1 :(得分:0)
我不清楚您遇到了什么问题,但是对您的代码进行的这种小修改对我有用(并且紧密基于我在comment中的建议)。
#include <stdio.h>
static void testFun(int *arr)
{
for (int i = 0; i < 2; i++)
{
printf("%d element: ", i + 1);
scanf("%d", &arr[i]);
}
}
int main(void)
{
int arr[2];
testFun(arr);
for (int i = 0; i < 2; i++)
printf("%d: %d\n", i + 1, arr[i]);
return 0;
}
样品运行:
1 element: 234512
2 element: 872390
1: 234512
2: 872390
代码中存在各种未解决的缺陷,
scanf()
的结果-应该为1;如果不是,那就有问题。我使用了C99风格的for
循环;如果您坚持使用C90,请在循环外部声明i
。
您还可以使用:
scanf("%d", arr + i);