我在尝试将数字从文件传递到结构时遇到问题。
我正在尝试读取的文件具有以下格式:
1002 January 287.4
1002 February 22.3
1002 March 51.4
到目前为止,这是我的代码。
#include <stdio.h>
#include <stdlib.h>
struct RainData{
int stationID;
float yearTotal;
};
int main(){
int n, i, x;
struct RainData *dataPtr;
FILE *fptr;
fptr = fopen("rain.dat","r");
if (fptr == NULL){
printf("Error in opening file\n");
return 1;
}
fscanf(fptr, "%d", &n);
dataPtr = (struct RainData *) malloc(n * sizeof(struct RainData));
for (i = 0; i < n; i++){
for (x = 0; x < 12; x++)
fscanf(fptr, "%d" "%f", &(*dataPtr).stationID[i], &(*dataPtr).yearTotal[i]);
}
fclose(fptr);
free(dataPtr);
return 0;
}
当我运行它时,我得到一个分段错误错误。我很确定我的错误出在 malloc 上,但我终其一生都无法弄清楚。我不确定如何使用 malloc 将变量转换为数组。我也知道 fscanf 中缺少“%s”。这个问题不使用月份,所以我想尽可能避免分配一个无用的变量来包含它。
提前致谢!