Waarschuwingsvergelijking tussen aanwijzer en geheel getal

Ik krijg een waarschuwing wanneer ik door de personage aanwijzer geef en controleer wanneer de aanwijzer de NULL-terminator bereikt.

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
 }

De fout die ik krijg is:

warning: comparison between pointer and integer
      ('int' and 'char *')

Ik dacht dat de *voor messagebericht sturen, dus ik krijg de waarde van waar berichtpunten naar? Ik wil de bibliotheekfunctie niet gebruiken strcmptrouwens.


Antwoord 1, Autoriteit 100%

het moet

zijn

if (*message == '\0')

In C, Simple Quotes afbakenen een enkel teken, terwijl dubbele aanhalingstekens voor snaren zijn.


Antwoord 2, Autoriteit 16%

Dit: "\0"is een tekenreeks, geen teken. Een personage maakt gebruik van afzonderlijke aanhalingstekens, zoals '\0'.


Antwoord 3, Autoriteit 13%

In deze lijn …

if (*message == "\0") {

… zoals je kunt zien in de waarschuwing …

WAARSCHUWING: vergelijking tussen aanwijzer en geheel getal
   ('int' en 'char *')

… u vergelijkt een intmet een char *of meer specifiek, een intmet een adres naar een char.

Gebruik hiervoor een van de volgende handelingen:

if(*message == '\0') ...
if(message[0] == '\0') ...
if(!*message) ...

Aan een kant opmerking, als u strings wilt vergelijken, moet u strcmpof strncmpgebruiken, gevonden in string.h.

Other episodes