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 message
bericht sturen, dus ik krijg de waarde van waar berichtpunten naar? Ik wil de bibliotheekfunctie niet gebruiken strcmp
trouwens.
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 int
met een char *
of meer specifiek, een int
met 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 strcmp
of strncmp
gebruiken, gevonden in string.h
.