我正在用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;
}
我只是想调用该函数。但是每次我尝试这样做时,它都是行不通的。我知道这个问题很基本,但是我似乎找不到解决方法。
答案 0 :(得分:4)
char userin = scanf("%s", name);
for(i = 0; i < size; i++)
{
if (strcmp(contacts[i].name, &userin) == 0)
您不能将strcmp
与char
一起使用,userin
必须是NUL终止的char
s数组
正如@JohnBollinger在评论中指出的那样,您似乎想比较name
,而不是scanf
的结果