我有这个非常简单的结构:
typedef struct contact{
char name[80];
char surname[80];
char cellnumber[20];
float hight;
}contact;
我想尝试将其传递给插入联系人的函数:
void insertcontact(contact){
printf("Insert name of contact: ");
fgets(contact.name,80,stdin);
getchar();
printf("Insert surname of contact: ");
fgets(contact.surname,80,stdin);
getchar();
printf("Insert celphone number of contact: ");
fgets(contact.cellnumber,20,stdin);
getchar();
printf("Insert length of contact: ");
scanf("%f",&contact.hight);
getchar();
}
但是当我这样做时出现了一些错误:
error: parameter name omitted
,error: expected expression before ‘contact’
和error: too few arguments to function ‘fgets’
我为每个fgets函数发生了最后两个错误,我认为它也与结构有关。有谁知道这意味着什么?
答案 0 :(得分:4)
为您的参数命名:
void insertcontact(contact _contact){
printf("Insert name of contact: ");
fgets(_contact.name,80,stdin);
getchar();
printf("Insert surname of contact: ");
fgets(_contact.surname,80,stdin);
getchar();
printf("Insert celphone number of contact: ");
fgets(_contact.cellnumber,20,stdin);
getchar();
printf("Insert length of contact: ");
scanf("%f",&_contact.hight);
getchar();
}
执行此操作时:
typedef struct contact
{
...
}contact;
您刚刚为您的struct提供了一个新的类型名称(类型的同义词),因此您需要在方法中传递参数的名称及其类型。