2次元配列のファイルから数値を読み取ろうとしていますが、最初の行と最初の列をスキップする必要があり、残りはすべて配列に保存する必要がありますsscanf、fscanf、strtok()を使ってみましたが、悲惨に失敗しました。ですから、この問題を解決するために私を助けてください。事前に ありがとう、特別な方法でファイルから浮動小数点数を読み取る
#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,waste;
i=0;
while(1)//read file line by line
{
fscanf(f, "%s %f %f %f %f %f %f %f %f %f %f %f %f ", waste, &data[i][0], &data[i][1], &data[i][2], &data[i][3], &data[i][4], &data[i][5], &data[i][6], &data[i][7], &data[i][8], &data[i][9], &data[i][10], &data[i][11]);
i++;
if(feof(f))break;
}
fclose(f);
for(i=0 ;i<12 ;i++){
for(j=0 ;j<12 ;j++){
printf("%.1f\t",data[i][j]);
}
printf("\n");
}
return 0;
}
なぜ、fscanfの戻り値をチェックしないのですか? –
'char waste'は単一の' char'ですが、 '%s'形式は配列を必要とします。それでも、それは(あなたが想像するように) 'char * waste'でした。割り当てられたメモリはありません。 –