我是新来的,所以如果我在提出这个问题时做错了,我会道歉。我在C中,每次从文件中读取元素的数字时,我都试图在数组中添加一个元素的值。我把它设置为在读取数字30时终止。我相信我正在制作出界限错误或类似的东西,因为在我尝试以下代码后打印出来的值是疯了。
int main(){
int votes[20];
FILE *input;
input = fopen("votes.txt", "r");
int currentVote;
while(currentVote != 30){
fscanf(input, " ");
fscanf(input, "%d",¤tVote);
if(currentVote == 30){
break;
}
votes[currentVote] += 1;
}
fclose(input);
int i;
int l = 19;
int x;
for(i = 0; i <= l; i++){
x = i;
printf("%d is %d\n",i,votes[x]);
}
return 0;
}
不幸的是,这是我得到的输出。
0 is 1
1 is 1
2 is 1
3 is 1
4 is 1835627637
5 is 1600061542
6 is 1869833335
7 is 1952802656
8 is 1
9 is 1
10 is 1
11 is 1
12 is 2
13 is 1
14 is 4196110
15 is 1
16 is 1
17 is 1
18 is 1
19 is 1
这是输入文本文件:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 30
提前谢谢。
答案 0 :(得分:1)
您的vote
数组未初始化为0
,因此某些值是垃圾值,因此是意外值。
int votes[20] = {0};