C 表达式必须是指向完整对象类型的指针?
我正在尝试对一系列结构进行更改。我的代码如下:C 表达式必须是指向完整对象类型的指针?,c,arrays,C,Arrays,我正在尝试对一系列结构进行更改。我的代码如下: 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[]; //vo
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;
}
typedef结构{
charfirstname[30];
char lastName[30];
查街[35];;
查尔城[20];
半焦态[3];
int-zip;
字符电话[15];
国际帐户ID;
}顾客;
结构客户列表[];
//无效副本名称(字符数据[],整数i){
//strcpy(客户名单[i])
//}
内部主(空){
int _zip,_accountId;
姓名[30]、姓氏[30]、街道[35]、城市[20]、州[3]、电话[15];
对于(int i=0;i<10;i++){
printf(“输入客户%d:\n”,i)的数据;
printf(“输入First-Last Phone:”);
scanf(“%s%s%s”、&_firstName、&_lastName、&_phone);
printf(“\n输入地址(街道-城市-州邮政编码):”;
scanf(“%s%s%s%d”、&_街、&_市、&_州、&_邮编);
strcpy(客户列表[i].firstName,\u firstName);
}
返回0;
}
我在标题中得到了错误消息,指的是客户列表。有人能帮我吗 变化
struct Customer 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];
或
如果他们这样做会更好:
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_list[10];
或
您在
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];
您的
客户列表
数组没有大小。试着用10个元素来定义它。绝对是个好主意!但仍然不确定主要问题…实际上我只是做了那个更改,对于我的帖子中描述的问题没有任何影响。您没有类型struct Customer
,因为您使用了typedef
,仅限Customer
。旁注:使用scanf
时,不应引用char
数组。取出那些符号(&
),让编译器将数组转换为指针。
Customer customer_list[10];
struct Customer_s customer_list[10];
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;
} ;
struct Customer customer_list[10];