2015-07-21 32 views
1

我有這樣的:字符轉換錯誤?

Serial.write(charBuf[0]); //gives 5 
String data(charBuf); 
Serial.write(data); //gives nothing (space) 

首先是印刷5,第二打印什麼。我錯過了什麼?它是否與NULL終止的東西?

這是如何被創建緩衝區:

int len=1; 
char charBuf[len]; 
for(int k=ACT_THRESH;k<ACT_THRESH+len;k++) 
{ 
    charBuf[k-ACT_THRESH]= EEPROM.read(k); 
} 
+0

你有一個最終的'\ 0'添加到我沒有得到循環的目標有一個有效的'字符串' –

+0

我在哪裏創建它?在我的例子中,我如何添加它? – Curnelious

回答

1
int len = 1; 
int str_len = 0; 
char charBuf[16]; 
for(int k = ACT_THRESH; k < ACT_THRESH + len && str_len < sizeof(charBuf); k++) 
{ 
    charBuf[str_len++]= EEPROM.read(k); 
} 
charBuf[str_len] = '\0'; 

但如果len = 1

+0

這裏的len是1只是一個測試。順便說一句,在你回答你必須將len設置爲2而不是1,我錯了嗎? – Curnelious

+0

哦,我明白了。但爲什麼16?你是如何達到16字節的大小的? – Curnelious

+0

沒有'charBuf'大小爲16,該字符串的長度是'str_len' –