2016-11-29 12 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キーワードの必要 は単に

Customer customer_list[10]; 

しないと宣言することは十分にありながら、あなたはそうstruct[typedef][1]を持っています。

または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]; 
関連する問題