2016-11-29 97 views
-1

我正在嘗試對結構數組進行更改。我的代碼如下:表達式必須是指向完整對象類型的指針嗎?

typedef struct { 
    char firstName[30]; 
    char lastName[30]; 
    char street[35]; 
    char city[20]; 
    char state[3]; 
    int zip; 
    char phone[15]; 
    int accountId; 
} Customer; 

struct Customer customer_list[]; 

//void copy_first_name(char data[], int i) { 
// strcpy(customer_list[i].) 

//} 

int main(void) { 

    int _zip, _accountId; 
    char _firstName[30], _lastName[30], _street[35], _city[20], _state[3], _phone[15]; 

    for (int i = 0; i < 10; i++) { 

     printf("Enter data for customer %d: \n", i); 
     printf("Enter First Last Phone: "); 
     scanf("%s%s%s", &_firstName, &_lastName, &_phone); 

     printf("\nEnter Address (Street City State ZIP): "); 
     scanf("%s%s%s%d", &_street, &_city, &_state, &_zip); 

     strcpy(customer_list[i].firstName, _firstName); 


    } 

    return 0; 
} 

我在標題中看到錯誤消息,指的是customer_list。誰能幫我嗎?

+0

你'customer_list'陣列沒有大小。嘗試用10個元素來定義它。 – paddy

+0

絕對是個好主意!仍然不知道主要問題,雖然... – Froobyflake

+0

我只是做了實際的變化,並沒有對我在文章中描述的問題的影響。 – Froobyflake

回答

2

變化

struct Customer customer_list[]; 

Customer customer_list[10]; 

或(不推薦,但語法的一個例子)

struct Customer { 
    char firstName[30]; 
    char lastName[30]; 
    char street[35]; 
    char city[20]; 
    char state[3]; 
    int zip; 
    char phone[15]; 
    int accountId; 
} customer_list[]; 

在您的例子,Customer是一個typedef,等於struct { ... }。它不是一個命名結構。

有些人喜歡這樣做,但我不喜歡它:

typedef struct Customer { 
    char firstName[30]; 
    char lastName[30]; 
    char street[35]; 
    char city[20]; 
    char state[3]; 
    int zip; 
    char phone[15]; 
    int accountId; 
} Customer; 

Customer customer_list[10]; 

struct Customer customer_list[10]; 

這將是更好的,如果他們做到了:

typedef struct Customer_s { 
    char firstName[30]; 
    char lastName[30]; 
    char street[35]; 
    char city[20]; 
    char state[3]; 
    int zip; 
    char phone[15]; 
    int accountId; 
} Customer; 

現在很明顯,CustomerCustomer_s之間有區別。

Customer customer_list[10]; 

struct Customer_s customer_list[10]; 
0

您在struct[typedef][1]所以雖然聲明沒有必要struct關鍵字 做簡單

Customer customer_list[10]; 

就足夠了。

或刪除typedef並宣佈struct這樣的..

struct Customer { 
    char firstName[30]; 
    char lastName[30]; 
    char street[35]; 
    char city[20]; 
    char state[3]; 
    int zip; 
    char phone[15]; 
    int accountId; 
} ; 

struct Customer customer_list[10]; 
相關問題