我正在尝试更改结构数组。我的代码如下:
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 :(得分: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;
现在很明显Customer
和Customer_s
之间存在差异。
Customer customer_list[10];
或
struct Customer_s customer_list[10];
答案 1 :(得分:0)
[typedef][1]
中有struct
,因此声明不需要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];