Предупреждение сравнение между указателем и целым числом

я получаю ошибку, когда я перебираю указатель символов и проверяю, когда указатель достигает нулевого Терминатора.

 const char* message = "hi";

 //I then loop through the message and I get an error in the below if statement.

 if (*message == "") {
  ...//do something
 }

ошибка, которую я получаю:

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

Я думал, что * перед message сообщение разыменования, поэтому я получаю значение, на которое указывает сообщение? Я не хочу использовать функцию библиотеки strcmp кстати.

3 ответов


Он должен быть!--2-->

if (*message == '')

в C простые кавычки ограничивают один символ, тогда как двойные кавычки предназначены для строк.


Это: "" - это строка, а не символ. Символ использует одинарные кавычки, например ''.


в этой строке ...

if (*message == "") {

... как вы можете видеть в предупреждении ...

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

... вы на самом деле сравниваете int С char *, или, более конкретно, к int С адреса char.

чтобы исправить это, используйте одно из следующих действий:

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

на боковой ноте, если вы хотите сравнить строки, которые вы должны использовать strcmp или strncmp, в string.h.