2015-09-10 14 views
6

Viene visualizzato un errore quando si scorre il puntatore del carattere e si verifica quando il puntatore raggiunge il terminatore nullo.Confronto di avvertenza tra il puntatore e il numero intero

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'errore che sto ottenendo è:

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

Ho pensato che il * davanti message dereferenziazioni messaggio, in modo da ottenere il valore di cui i punti di messaggi a? A proposito, non voglio usare la funzione di libreria strcmp.

+1

Si noti che '" \ 0 "' è una stringa con due byte null consecutivi (quindi il secondo non può essere trovato dalla stringa che manipola funzioni come 'strlen()' perché si fermano al primo byte null). La stringa vuota "" "' consiste in un singolo byte null. –

risposta

22

Dovrebbe essere

if (*message == '\0') 

In C, citazioni semplici delimitano un singolo carattere, mentre le doppie virgolette sono per le stringhe.

+0

Oh, quindi le virgolette fanno la differenza? Grazie Sono in grado di compilare con successo ora. – catee

+1

Sono felice di aiutare. L'avviso indica che stai cercando di confrontare un carattere con una stringa, da qui il messaggio "confronto tra puntatore (stringa) e intero (carattere)". –

7

Questo: "\0" è una stringa, non un carattere. Un personaggio usa virgolette singole, come '\0'.

5

In questa linea ...

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

... come si può vedere nel avvertimento ...

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

... in realtà si sta confrontando un int con un char *, o più nello specifico, un int con un indirizzo a char.

Per risolvere questo problema, utilizzare uno dei seguenti modi:

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

Su un lato nota, se si desidera confrontare le stringhe si dovrebbe usare strcmp o strncmp, trovato in string.h.

Problemi correlati