bubba
bubba

Reputation: 1

Linear Search of a Const Char* array

I'm trying to do a linear search of a const char* array of strings that I have and am having a though time understanding what is wrong here.

The array is in a .h file and looks like this:

#pragma once
#include <iostream>
#include <string>
using namespace std;


const char* names[] = { "rodger", "michael", "tina", "jose", "chris", "andrew" };

And the code that I'm using for my linear search looks like this:

int linear_search(int array[], int size, int value) {
    
    
    for (int i = 0; i < size; i++) {
        if (value == names[i]) {
            return i;
        }
    }

}

The compiler gives me the error that I can't compare int types and const char types, but how do I go about this if my array is of strings? Not just integers?

Upvotes: 0

Views: 195

Answers (2)

user8143588
user8143588

Reputation:

You have to adapt your search routine to char array:

int linear_search( const char* array[], int size, const char* value) {
    for (int i = 0; i < size; i++) {
        if ( ::strcmp( value, array[i] ) == 0 ) {
            return i;
        }
    }
    // Need to flag invalid or not found
    return -1; 
}

Upvotes: 0

speciesUnknown
speciesUnknown

Reputation: 1753

It looks like you're trying to search for a given value. Since your array is a n array of char* you need to compare two char* together using strcmp.

https://www.cplusplus.com/reference/cstring/strcmp/

As a side note, you're using c++ to it makes more sense to use std::string than char*

Upvotes: 1

Related Questions