0

ここで、文字列を理解するための助けが必要です。フラッシュされてから 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;  
}  
4

1 に答える 1

4

はい、あなたのコードは正しいです。

これを使用すると、文字の後に文字列ターミネータが続くstrcmp()ことがわかっている場合にのみ機能します。バイナリデータのように見えるので、使用するのは非常に奇妙です。'\x04''\0'strcmp()

「文字列」を比較しているわけ==ではないので、使用しても問題ありません。C では、「文字列」は「(ポインタへの) 0 で終わる配列」を意味しますchar。それはあなたが扱っているものではないので、文字列を扱う方法について学んだ教訓は当てはまりません。

于 2013-06-05T09:47:40.443 に答える