Strcmp not working properly

Strcmp has been bugging me for a whole day now.
All of my strcmp are basically like that but it's not working. And I don't think it has to do with the char being inside a struct. It gives me a warning and when I run it it gives me a status access violation error.

 if(strcmp(variable.players[variable.p].tiles[j], word[j])!=0){
   printf("You don't have the letter %c\n",variable.players[variable.p].tiles[j]);
strcmp compares C-style strings, which are a contiguous sequence of characters terminated by a '\0'.

From the printf, we can see that the tiles array holds single characters, not C-style strings. Don't use strcmp if you don't have C-style strings.
You don't say which warning, nor you tell enough about the variables.
strcmp() does not compare single characters, as its name suggests it compares strings. More specifically, arrays of characters.

If you want to search for a char inside of an array, maybe you should use strchr() instead.
please post the whole warning and error messages so we can have a clue on where to look for the error
OH, ok. Cause I was trying to compare single chars.


if(variable.players[variable.p].tiles[j] == word[j])

works just fine?

The warning btw, is that the passing arg 1 and 2 of strcmp makes pointer from integer without a cast and the error is a status access violation.

EDIT: I just realized that I have to check if all the chars in a string exists in a array of chars.

In my code, the word to be checked is word[j] and the array of chars is the variable.players[variable.p].tiles[j].

Any ideas on how to do that?
Last edited on
Any ideas on how to do that?

As keskiverto suggested above, use string::find_first_of().

This will also serve as a gentle introduction to how a C++ programmer should take advantage of the C++ library.

Case in point, char arrays are remnants of good old C, and together with them, the entire string.h library (with strcmp(), strcpy() etc). As a C++ programmer you are encouraged to move up to std::string.
Topic archived. No new replies allowed.