C - fscanf读数错误

时间:2015-09-02 03:21:49

标签: c scanf

从头到尾这在技术上不是家庭作业。它不值得一个年级,它只是为了练习。因此,不要以为我为了获得更好的成绩而作弊。

这是我正在从事的工作:

Car* readCars(char* filename) {
    FILE* fp = fopen( filename, "r" );

    if( fp == NULL ) {
        printf( "Error: Invalid File!" );
        exit(1);
    }

    Car cars[5];
    Car *carPtr;
    int i = 0;

    while( 1 ) {
        fscanf( fp, "%s %s %s %i", cars[i].color, cars[i].model, cars[i].brand, &cars[i].year );
        if( feof( fp ) ) {
            break;
        }
        i++;
    }

    carPtr = cars;

    fclose( fp );

    return carPtr;
}

汽车结构:

typedef struct _car {
    char* color;
    char* model;
    char* brand;
    int year;
} Car;

在“回车”;当我期待'Car'时,我在返回类型'struct Car *'时得到“不兼容的类型”

这是我从main调用函数的地方,以及我对汽车“对象”的声明。

Car *car;

car = readCars( carFileName );

1。)从文件中扫描时出现错误。

1 个答案:

答案 0 :(得分:0)

结构Car中的字符串没有空格。

typedef struct _car {
    // char* color;
    char color[20];
    int year;
} Car;

if (2 != fscanf(fp, "%19s%d", cars[i].color, &cars[i].year) {
  break;
}