将结构传递给函数会给c带来奇怪的错误

时间:2015-03-26 08:08:27

标签: c struct

我有这个非常简单的结构:

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 omittederror: expected expression before ‘contact’error: too few arguments to function ‘fgets’

我为每个fgets函数发生了最后两个错误,我认为它也与结构有关。有谁知道这意味着什么?

1 个答案:

答案 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提供了一个新的类型名称(类型的同义词),因此您需要在方法中传递参数的名称及其类型。