我正在尝试从下面的文件中只读取浮点数,不包括2D数组中所有月份和区域的名称,然后打印2D数组但没有得到正确的输出,(输出为零和垃圾值)请查看我的代码并尝试提供帮助。
#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;
}
答案 0 :(得分:2)
您可以使用sscanf()
读取浮点数,而不是使用save(filename, 'data', '-v6');
解析您的行。它们也是有关使用strtok()
说明符的信息,这在使用%n
读取输入时很有用。
注意:您还可以使用sscanf()
直接阅读输入,而不是使用fgets()
/ sscanf()
,这是另一种可能的方法。
以下是一些示例代码:
fscanf()