Wizard
Wizard

Reputation: 11265

How to compare char variables (c-strings)?

#include <iostream>
using namespace std;

int main() {
    char word[10]="php";
    char word1[10]="php";

    if(word==word1){
        cout<<"word = word1"<<endl;
    }

return 0;
}

I don't know how to compare two char strings to check they are equal. My current code is not working.

Upvotes: 0

Views: 18075

Answers (5)

Pato Parra
Pato Parra

Reputation: 1

#include <iostream>
**#include <string>** //You need this lib too

using namespace std;

int main() 
{

char word[10]="php";
char word1[10]="php";

**if(strcmp(word,word1)==0)** *//if you want to validate if they are the same string*
    cout<<"word = word1"<<endl;
*//or*
**if(strcmp(word,word1)!=0)** *//if you want to validate if they're different*
    cout<<"word != word1"<<endl;

return 0;``
}

Upvotes: -2

Eric
Eric

Reputation: 21

word and word1 in your submitted code are pointers. So when you code:

word==word1

you are comparing two memory addresses (which isn't what you want), not the c-strings they point to.

Upvotes: 2

Michael Krelin - hacker
Michael Krelin - hacker

Reputation: 143051

To justify c++ tag you'd probably want to declare word and word1 as std::string. To compare them as is you need

if(!strcmp(word,word1)) {

Upvotes: 6

Pubby
Pubby

Reputation: 53017

Use strcmp.

#include <cstring>
// ...
if(std::strcmp(word, wordl) == 0) {
// ...
}

Upvotes: 9

trojanfoe
trojanfoe

Reputation: 122381

Use std::string objects instead:

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

int main() {
    string word="php";
    string word1="php";

    if(word==word1){
        cout<<"word = word1"<<endl;
    }

return 0;
}

Upvotes: 7

Related Questions