从文件中读取浮点数

时间:2017-03-05 11:58:24

标签: c multidimensional-array input file-io

我正在尝试从下面的文件中只读取浮点数,不包括2D数组中所有月份和区域的名称,然后打印2D数组但没有得到正确的输出,(输出为零和垃圾值)请查看我的代码并尝试提供帮助。

Link to the .txt file

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[]){
  FILE *f=fopen("Monthly_Rainfall_Himachal.txt","r");
  float data[12][12];
  int i,j;
  char newLine[1000];
  fgets(newLine,1000,f);
  char* item;
  fgets(newLine,1000,f);
  while(!feof(f)){
    for(i=0;i<12;i++){
      item=strtok(newLine,"\t");
      for(j=0;j<12;j++){
        item=strtok(NULL,"\t");
        data[i][j]=atof(item);
      }
      fgets(newLine,1000,f);
    }
  }
  for(i=0 ;i<12 ;i++){
    for(j=0 ;j<12 ;j++){
      printf("%.1f\t",data[i][j]);
    }
    printf("\n");
  }
  return 0;
}

1 个答案:

答案 0 :(得分:2)

您可以使用sscanf()读取浮点数,而不是使用save(filename, 'data', '-v6'); 解析您的行。它们也是有关使用strtok()说明符的信息,这在使用%n读取输入时很有用。

注意:您还可以使用sscanf()直接阅读输入,而不是使用fgets() / sscanf(),这是另一种可能的方法。

以下是一些示例代码:

fscanf()