从文本文件

时间:2016-07-13 02:16:14

标签: c arrays

我是新来的,所以如果我在提出这个问题时做错了,我会道歉。我在C中,每次从文件中读取元素的数字时,我都试图在数组中添加一个元素的值。我把它设置为在读取数字30时终止。我相信我正在制作出界限错误或类似的东西,因为在我尝试以下代码后打印出来的值是疯了。

int main(){

  int votes[20];
  FILE *input;

  input = fopen("votes.txt", "r");
  int currentVote;   
  while(currentVote != 30){
    fscanf(input, " ");
    fscanf(input, "%d",&currentVote);
    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

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您的vote数组未初始化为0,因此某些值是垃圾值,因此是意外值。

int votes[20] = {0};
相关问题