从文件中读取数字以存储在C

时间:2015-11-22 14:19:56

标签: c

我试图从一个看起来像这样的文件中读取

  

1 1 756.00
  1 2 996.45
  1 3 5159.14
  1 4 710.21
  1 5 10.00
  2 1 1449.00
  2 2 416.10
  2 3 3119.48
  2 4 2130.63
  2 5 0.00
  3 2 810.30
  3 3 2219.63
  3 4 1151.03
  3 5 0.00
  4 1 1071.00
  4 3 1319.78
  4 4 1861.24
  4 5 0.00

然后将数字存储到二维数组中。但是,该文件也大约有478行。这是因为我应该继续存储当前值,加上每次迭代时读取的值。我根本不知道如何处理这个问题。我试过这个

 while(!feof(fp)) 
 {
    for(i = 0; i < 4; i++) 
    {
       fgets(buffer, 100, fp);
       sscanf(buffer, "%d", &i);

       for(j = 0; j < 5; j++) 
       {
           fgets(buffer, 100, fp);
           sscanf(buffer, "%d", &j);

           for(k = 0.0; k != ' '; k++) 
           {
               fgets(buffer, 100, fp);
               sscanf(buffer, "%lf", &value);
               sales[i-1][j-1] +=value;
           }
       }
    }
 }

fclose(fp);

但我很确定这甚至不是正确的方法。我只需要在正确的方向上至少提供一些指导。

2 个答案:

答案 0 :(得分:1)

看起来第一个和第二个值是索引。如果是这样,那么这可能会有效。

while ( fgets(buffer, 100, fp)) {
    if ( ( sscanf(buffer, "%d%d%lf", &i, &j, &value)) == 3) {
        sales[i-1][j-1] =value;
    }
}

答案 1 :(得分:1)

怎么样:

while(scanf("%d %d %lf", &r, &c, &v) != EOF)
    sales[r-1][c-1] += v;