2017-01-18 138 views
-2
#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; 
} 

你好編譯這個結構的程序,我得到一個錯誤在我main功能行load(struct lottery array); 。錯誤說在結構之前的預期表達式。 我把它搜索了一遍,我不明白爲什麼它會期待一個表達式,我有點困惑。我得到一個錯誤使用C

+0

哪一行的錯誤是什麼? –

+0

歡迎來到Stack Overflow! [請參閱此討論,爲什麼不在'C'中投射'malloc()'和family的返回值。](http://stackoverflow.com/q/605845/2173917)。 –

+0

請了解如何正確格式化代碼。可讀性是良好代碼的主要方面。 :) –

回答

1

問題在於函數調用。在你的代碼中,你寫了

load(struct lottery array); 

這是錯誤的。您應該僅傳遞變量作爲自變量,像

load(array); 

這就是說,你fopen()故障檢查和後續代碼看起來也錯了。你正在檢查失敗的情況,但仍然繼續使用返回的指針,這種類型的失效首先會影響檢查。

+1

謝謝。它現在完美運行! – Edward

+0

@愛德華不客氣。你也可以[考慮接受幫助你的答案](http://meta.stackexchange.com/q/5234/244062)。 –

1

調用函數時傳遞給函數的參數只是變量 - 您也不需要包含數據類型。太行

load(struct lottery array); 

應該只是

load(array); 
相關問題