2016-12-05 9 views
-1

私はunsigned charの長さを見つける方法について質問がありますか?Cを使ってunsigned charの長さを計算する方法は?

unsigned char tlv_buffer = "DF04024500DF0C03125050"; 

plsは誰もがそれは私を助けて知っている: は、ここで私のunsigned char型のですか?

+1

初期設定が間違っています。 –

+0

unsigned charのサイズは、言語定義によって1です。その長さは、8ビットの可変でない文字エンコーディングでも1になります(UTF8のようなものが部分文字になる可能性があり、UTF32で1つのunsigned charがちょうど1文字の1/4になります)。 – hyde

+0

実際に@Georgeは制約違反です(C標準によるエラー) –

答えて

0
#include <stdio.h> 
#include <string.h> 

int main(){ 
printf("Hello, World!\n"); 
unsigned char tlv_buffer[] = "DF0402df4500DF0C03125050"; 
int length = strlen(tlv_buffer); 
printf("Length is %d \n", length); 
return 0; 
} 

//テスト済みです。それはあなたが好きに初期化する必要があり

+0

幸運を祈る。 – George

+0

tlv_bufferはポインタである必要があります – staringlizard

+1

@staringlizardポインタに崩壊するものである必要があります。 – George

4

仕事:

unsigned char *tlv_buffer = "DF04024500DF0C03125050"を。

、次いでstrlen

int tlv_buffer_length = strlen((char*) tlv_buffer)を使用して長さを計算します。

として、または@ M.Mコメントでそれを指す:

char tlv_buffer [] = "DF04024500DF0C03125050"

int tlv_buffer_length = strlen(tlv_buffer);

+0

バッファタイプ(または 'char []')として単純な 'char *'を使用するコードを簡略化すると付け加えます。 –

+0

char * tlv_buffer =(char *) "DF04024500DF0C03125050"; int tlv_buffer_length = strlen(tlv_buffer); – dreamcrash

+0

キャストは必要ありません。 (コードマークアップのためにバックティックを使用する) –

関連する問題