我想使用 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
我想使用 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
a+i is not friendly to newcomer.
我建议
scanf("%d", &a[i]);
我建议:
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);
}
您的代码表明您希望您的数组将动态调整大小;但这不是 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
将找不到数字并返回值 0realloc
. 它可以与 结合使用malloc
来创建可变大小的数组。但是,如果您的初始数组在上面的代码片段中声明,它将不起作用。addScores
,因此有效的scanf
) ,>0
而不是!=0
捕获有人键入 ctrl-D ("EOF") 以终止输入的情况。感谢@chux 的建议!