我正在尝试在结构中搜索元素。因此,用户将输入id,它将搜索结构以查看是否包含该信息。当我运行程序时,它总是返回数组中的最后一个元素。我不确定我是否正确搜索。这是我的代码:
typedef struct
{
int locationNum;
char id[15];
char description[50];
float latitude;
float longitude;
} localInfo;
// passing in the locationArray struct and count is the length of the array
void searchLocation(localInfo *locationArray, int count)
{
char locationID[15];
printf("\nEnter Location ID to search: ");
scanf("%s", locationID);
getchar();
int i;
for(i = 0; i < count; i++)
{
if(strcmp(locationArray[i].id, locationID))
{
printf("Found it!, Here are the informations:\n");
printf("Location ID: %s\n", locationArray[i].id);
printf("Location Description: %s\n", locationArray[i].description);
printf("Location Latitude: %s\n", locationArray[i].latitude);
printf("Location Longitude: %s\n", locationArray[i].longitude);
}
else
{
printf("ID is NOT Found\n");
}
}
}
答案 0 :(得分:1)
问题是因为strcmp在匹配时返回0:
void searchLocation(localInfo *locationArray, int count)
{
char locationID[15];
printf("\nEnter Location ID to search: ");
scanf("%s", locationID);
getchar();
int i;
for(i = 0; i < count; i++)
{
if(strcmp(locationArray[i].id, locationID) == 0)
{
printf("Found it!, Here are the informations:\n");
printf("Location ID: %s\n", locationArray[i].id);
printf("Location Description: %s\n", locationArray[i].description);
printf("Location Latitude: %s\n", locationArray[i].latitude);
printf("Location Longitude: %s\n", locationArray[i].longitude);
break;
}
else
{
printf("ID is NOT Found\n");
}
}
}