bubbles2189
bubbles2189

Reputation: 159

Search for an element in a struct array, c programming

I am trying to search for an element in the struct. So the user will enter the id, and it will search the struct to see it if contains that information. When I ran the program, it always returns the last element in the array. I am not sure if I am searching correctly. Here is my code:

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");
        }
    }
}

Upvotes: 0

Views: 1940

Answers (1)

Claudio Borges
Claudio Borges

Reputation: 132

The issue is because strcmp return 0 when it matches:

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");
        }
    }
}

Upvotes: 1

Related Questions