关于if语句和strcmp与字符串的混淆

时间:2013-06-05 09:44:22

标签: c string if-statement strcmp

在这里,我需要一些帮助来理解字符串。我有一个buff,它被冲洗然后传递给UART函数。此缓冲区现在已更新,并且保留了一些值。我需要检查缓冲区的第5个字节。令我困惑的是,我在下面的代码中写道。 请看一下。

int main()  
{  
  char buff[8];
  memset(buff,0,8);  

  /*  
       This buff is used by some UART function, and hence is updated by UART  
       This buff now holds some data. And now, I need to check the 5th byte it is holding.  
  */   

  if(buff[4]==0x04)  //will this work? or I need to use if(strcmp(buff[4],0x04))  ???
  {  
    //Do some functionality, for an example    
    printf("True");  
  }  
  else  
    printf("False");  

  return 0;  
}  

1 个答案:

答案 0 :(得分:4)

您的代码是正确的,是的。

只有当您知道strcmp()字符后跟'\x04'字符串终止符时,才能使用'\0'。由于它看起来像二进制数据,因此使用strcmp()会非常奇怪。

以任何方式比较“字符串”,所以使用==很好。在C中,“字符串”表示“a(指向a的指针)0端接的char数组”。这不是你要处理的,所以任何关于如何处理字符串的经验教训都不适用。