2014-01-17 57 views
0

我試圖把從Ptr在框架的端部中C.將整型指針,陣列

void myFunction(uint8_t * Ptr) 
{ 
uint8_t frame[] = {0x1, 0x2, 0x3, *Ptr} 
} 

int _main() 
{ 
myFunction("Hello"); 
} 

在該溶液中,我把只有H的「你好」到幀[4]由於8位。

之後,我試圖

strcat((char*)frame, (char*) StateTxtPtr); 

,但沒有奏效。

的解決方案應該是這樣的: 幀= {爲0x1,0x2,則0x3, 「H」, 「E」, 「L」, 「L」, 「O」}

感謝您的幫助!

解決方案**

void myFunction(uint8_t * Ptr, uint32_t TxtSize) 
{ 
uint8_t frame[25] = {0x1, 0x2, 0x3, *Ptr} 
memcpy(&frame[3], Ptr, TxtSize); 
} 

int _main() 
{ 
uint32_t TxtSize = strlen((char *)&txt[i][0]); 
myFunction("Hello", TxtSize); 
} 
+0

爲什麼使用'{0x1,0x2,0x3,* Ptr}'而不是'{0x1,0x2,0x3,Ptr}'? – enedil

+1

'frame'是一個數組,其長度在編譯時確定。如同你自己,編譯器如何做到這一點,並滿足你的需求。 –

+1

@enedil這根本行不通,它甚至不會編譯。 – unwind

回答

6

你的問題沒有任何意義。

你可能想是這樣的:

uint8_t frame[8] = { 1, 2, 3 }; 

memcpy(frame + 3, "Hello", 5); 

注意frame必須有房的人物,那memcpy()被用來避免寫'\0'終止子的字符串有。

+0

感謝您的回答。這幫助我很多,解決了我的問題! – pinoxxio