不知道如何调用函数

时间:2019-05-01 17:54:26

标签: c pointers struct

我正在用C编写一个使用指针和结构的搜索功能。可以使用带有十个条目的名为contatcs的数组按名称搜索。该数组已经初始化并填充,并且可以按预期工作。

我试图通过重组代码来解决此问题,但这只会使情况变得更糟。也许我找不到设计逻辑中的缺陷。

typedef struct
{
    char streetname[150];
    char city[50];
    int zipcode;
}address;

typedef struct
{
    char name[50];
    int age;
    address homeaddress;
}person;

int search (char* name, person *contacts, int size);

[...] // initialization and population of array omitted

int search (char *name, person *contacts, int size)
{
    int i;
    printf("Input name: ");
    char userin = scanf("%s", name);

    for(i = 0; i < size; i++)
    {
        if (strcmp(contacts[i].name, &userin) == 0)
        {
            printf("Name: %s;", contacts[i].name);
            printf(" Age: %d;", contacts[i].age);
            printf(" Adress: %s, ", contacts[i].homeaddress.streetname);
            printf("%s, ", contacts[i].homeaddress.city);
            printf("%d\n", contacts[i].homeaddress.zipcode);
        }
    }
    return 0;
}

我只是想调用该函数。但是每次我尝试这样做时,它都是行不通的。我知道这个问题很基本,但是我似乎找不到解决方法。

1 个答案:

答案 0 :(得分:4)

char userin = scanf("%s", name);

    for(i = 0; i < size; i++)
    {
        if (strcmp(contacts[i].name, &userin) == 0)

您不能将strcmpchar一起使用,userin必须是NUL终止的char s数组

正如@JohnBollinger在评论中指出的那样,您似乎想比较name,而不是scanf的结果