我在c中编译这个struct程序时遇到错误

时间:2017-01-18 15:56:44

标签: c

#include <stdio.h>
#include <stdlib.h>

struct date {
    int day;
    int month;
    int year;
};

struct lottery {
    int aa;
    struct date date1;
    int n1;
    int n2;
    int n3;
    int n4;
    int n5;
    int joker;
};

void load(struct lottery *array) {
    FILE *fp;
    fp = fopen("as.txt", "r");
    if (fp == NULL)
        printf("00000\n");
    int i;
    for (i = 0; i < 1; i++) {
        fscanf(fp, "%d;%d/%d/%d;%d;%d;%d;%d;%d;%d", &array[i].aa, &array[i].date1.day, &array[i].date1.month, &array[i].date1.year, &array[i].n1, &array[i].n2, &array[i].n3, &array[i].n4, &array[i].n5, &array[i].joker);
        if (feof(fp))
            break;
    }
    array = (struct lottery*)realloc(array, i * sizeof(struct lottery));
    //  printf("%d;%d/%d/%d;%d;%d;%d;%d;%d;%d", array[0].aa, array[0].date1.day, array[0].date1.month, array[0].date1.year, array[0].n1, array[0].n2, array[0].n3, array[0].n4, array[0].n5, array[0].joker);
 }

int main() {
    struct lottery *array;
    array = (struct lottery *)malloc(4 * sizeof(struct lottery));
    // printf("%d", sizeof(struct lottery));
    load(struct lottery array);
    printf("%d",array[0].aa);

    return 0;
}

您好,我在第load(struct lottery array);行收到错误 在我的main函数中。错误说结构之前的预期表达式。 我用谷歌搜索了一下,我无法理解为什么它会在那里表达一种表达方式,我有点困惑。

2 个答案:

答案 0 :(得分:1)

问题在于函数调用。在您的代码中,您已经编写了

 load(struct lottery array);

这是错误的。您应该只将变量作为参数传递,例如

load(array);

也就是说,您的fopen()失败检查和后续代码也看起来不对。你正在检查失败的情况,但仍然继续使用返回的指针,这种方式首先取消了检查的效果。

答案 1 :(得分:1)

调用它们时传递给函数的参数只是变量 - 您也不需要包含数据类型。这一行

load(struct lottery array);

应该只是

load(array);