从文件中读取额外行

时间:2013-11-11 21:36:29

标签: c

我正在尝试从文本文件中读取并将其存储到数组中,但我的最后一个数组中充满了垃圾,有没有办法解决它?作为参考,我不需要最后一行值,但我似乎无法找到摆脱它的方法。

int k;
char string[100];
for(k = 0; k < MAX_STATIONS; k++){
    if (fgets(string, sizeof(string), fp) == 0){
        break;
    }
    fscanf(fp,"%d %f %d %d %d %d %d %f %f", &stationInfo[k].stationID, &stationInfo[k].temperature, &stationInfo[k].year, &stationInfo[k].month, &stationInfo[k].day, &stationInfo[k].hour, &stationInfo[k].minute, &stationInfo[k].location.latitude, &stationInfo[k].location.longitude);
    printf("%d %1.2f %d %d %d %d %d %f %f\n", stationInfo[k].stationID, stationInfo[k].temperature, stationInfo[k].year, stationInfo[k].month, stationInfo[k].day, stationInfo[k].hour, stationInfo[k].minute, stationInfo[k].location.latitude, stationInfo[k].location.longitude);
}
编辑:我已经意识到使用这种方法,我实际上并没有读到我文件的第一行。我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:2)

您应该检查fscanf的返回值,它返回读取字段的数量并忽略(或打印警告)不完整的行。另一个想法是检查100个字符是否足够长以保持最长的行(+ EOS)。