I am getting a warning when I iterate through the character pointer and check when the pointer reaches the null terminator.
const char* message = "hi"; //I then loop through the message and I get an error in the below if statement. if (*message == "\0") { ...//do something }The error I am getting is:
warning: comparison between pointer and integer ('int' and 'char *')I thought that the * in front of message dereferences message, so I get the value of where message points to? I do not want to use the library function strcmp by the way.
3 Answers
It should be
if (*message == '\0')In C, simple quotes delimit a single character whereas double quotes are for strings.
2This: "\0" is a string, not a character. A character uses single quotes, like '\0'.
In this line ...
if (*message == "\0") {... as you can see in the warning ...
warning: comparison between pointer and integer ('int' and 'char *')... you are actually comparing an int with a char *, or more specifically, an int with an address to a char.
To fix this, use one of the following:
if(*message == '\0') ...
if(message[0] == '\0') ...
if(!*message) ...On a side note, if you'd like to compare strings you should use strcmp or strncmp, found in string.h.