指针和整数之间的警告比较

cat*_*tee 15 c null-terminated

当我遍历字符指针并检查指针何时到达空终止符时,我收到错误.

 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
 }
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

warning: comparison between pointer and integer
      ('int' and 'char *')
Run Code Online (Sandbox Code Playgroud)

我认为*messagedereferences消息面前,所以我得到消息指向的值?strcmp顺便说一下,我不想使用库函数.

bla*_*ead 38

它应该是

if (*message == '\0')
Run Code Online (Sandbox Code Playgroud)

在C中,简单引号用于分隔单个字符,而双引号用于字符串.

  • 我很乐意提供帮助。警告意味着您正在尝试将字符与字符串进行比较,因此出现“指针(字符串)和整数(字符)之间的比较”消息。 (2认同)

dbu*_*ush 9

"\0"是:字符串,而不是字符.角色使用单引号,如'\0'.


Fid*_*its 5

在这一行......

if (*message == "\0") {
Run Code Online (Sandbox Code Playgroud)

......正如你在警告中看到的......

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

...实际上,您正在将a int与a 进行比较char *,或者更具体地说,将a int与地址进行比较char.

要解决此问题,请使用以下方法之一:

if(*message == '\0') ...
if(message[0] == '\0') ...
if(!*message) ...
Run Code Online (Sandbox Code Playgroud)

另外,如果你想比较你应该使用的字符串,strcmp或者strncmp找到string.h.