Предупреждение сравнение между указателем и целым числом
я получаю ошибку, когда я перебираю указатель символов и проверяю, когда указатель достигает нулевого Терминатора.
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
.