Je reçois une erreur lorsque je parcours le pointeur du caractère et que je vérifie quand le pointeur atteint le terminateur nul.
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
}
L'erreur que je reçois est la suivante:
warning: comparison between pointer and integer
('int' and 'char *')
Je pensais que le *
devant message
message de déréférence, je reçois donc la valeur où le message pointe? Je ne veux pas utiliser la fonction de bibliothèque strcmp
d'ailleurs.
CA devrait etre
if (*message == '\0')
En C, les guillemets simples délimitent un seul caractère alors que les guillemets doubles concernent les chaînes.
Cette: "\0"
est une chaîne, pas un caractère. Un caractère utilise des guillemets simples, comme '\0'
.
Dans cette ligne ...
if (*message == "\0") {
... comme vous pouvez le voir dans l'avertissement ...
warning: comparaison entre pointeur et entier ('int' et 'char *')
... vous comparez en fait un int
avec un char *
, ou plus précisément un int
avec une adresse à un char
.
Pour résoudre ce problème, utilisez l'une des méthodes suivantes:
if(*message == '\0') ...
if(message[0] == '\0') ...
if(!*message) ...
En passant, si vous souhaitez comparer des chaînes, vous devez utiliser strcmp
ou strncmp
, présent dans string.h
.