我想使用scanf为数组添加数字 我做错了什么?它说预期在第一个括号上的一个表达式{在scanf中的i前面......
void addScores(int a[],int *counter){
int i=0;
printf("please enter your score..");
scanf_s("%i", a[*c] = {i});
}//end add scores
答案 0 :(得分:2)
我建议:
void addScores(int *a, int count){
int i;
for(i = 0; i < count; i++) {
printf("please enter your score..");
scanf("%d", a+i);
}
}
用法:
int main() {
int scores[6];
addScores(scores, 6);
}
答案 1 :(得分:2)
a+i is not friendly to newcomer.
我建议
scanf("%d", &a[i]);
答案 2 :(得分:1)
您的代码表明您希望动态调整数组的大小;但这不是C中发生的事情。你必须预先创建一个正确大小的数组。假设您在阵列中为您可能想要收集的所有分数分配了足够的内存,则可以使用以下内容:
#include <stdio.h>
int addScores(int *a, int *count) {
return scanf("%d", &a[(*count)++]);
}
int main(void) {
int scores[100];
int sCount = 0;
int sumScore = 0;
printf("enter scores followed by <return>. To finish, type Q\n");
while(addScores(scores, &sCount)>0 && sCount < 100);
printf("total number of scores entered: %d\n", --sCount);
while(sCount >= 0) sumScore += scores[sCount--];
printf("The total score is %d\n", sumScore);
}
有几点需要注意:
addScores
无法跟踪总计数:该变量保存在主程序中scanf
将找不到数字并返回值0 realloc
。它可以与malloc
结合使用来创建可变大小的数组。但是,如果您的初始数组在上面的代码片段中声明,那么它将不起作用。addScores
,因此有效地scanf
)>0
而不是!=0
可以捕获有人输入ctrl-D(“EOF”的情况“)终止输入。感谢@chux的建议!