在结构数组中搜索元素,c编程

时间:2017-10-10 21:48:38

标签: c

我正在尝试在结构中搜索元素。因此,用户将输入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");
        }
    }
}

1 个答案:

答案 0 :(得分:1)

问题是因为s​​trcmp在匹配时返回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");
        }
    }
}