2016-11-29 72 views
-1

Ich versuche, ein Array von Strukturen zu ändern. Mein Code ist wie folgt:Ausdruck muss Zeiger auf vollständigen Objekttyp sein?

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; 
} 

Ich bekomme die Fehlermeldung im Titel, bezogen auf customer_list. Kann mir jemand helfen?

+0

Ihr 'customer_list' Array hat keine Größe. Versuchen Sie es mit 10 Elementen zu definieren. – paddy

+0

Definitiv eine gute Idee! Immer noch nicht sicher über das Hauptproblem ... – Froobyflake

+0

Ich habe gerade diese Änderung tatsächlich gemacht, und es hatte keine Auswirkungen in Bezug auf das Problem in meinem Beitrag beschrieben. – Froobyflake

Antwort

2

ändern

struct Customer customer_list[]; 

zu

Customer customer_list[10]; 

oder (nicht empfohlen, sondern ein Beispiel für die Syntax)

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[]; 

In Ihrem Beispiel ist Customer ein typedef, gleich struct { ... }. Es ist keine benannte Struktur.

Einige Leute mögen, dies zu tun, aber ich mag es nicht:

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]; 

oder

struct Customer customer_list[10]; 

Es wäre besser, wenn sie es taten:

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; 

Jetzt Es ist klar, dass zwischen Customer und Customer_s ein Unterschied besteht.

Customer customer_list[10]; 

oder

struct Customer_s customer_list[10]; 
0

Sie haben [typedef][1] in struct so während keine Notwendigkeit von struct Stichwort erklärt tun einfach

Customer customer_list[10]; 

genug ist.

oder die typedef entfernen und erklären struct wie dieses ..

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]; 
Verwandte Themen