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]);
あなたのコードは、配列が動的にサイズ変更されることを期待していることを示唆しています。しかし、それは 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
)をテストします。提案してくれた@chuxに感謝します!>0
!=0