2011-09-21 68 views
-2

我有以下代碼:替換字節

unsigned char* originaldata = (unsigned char*)malloc(50); 
strcpy((char*)originalData,"12345  7"); 

unsigned char* replacingData = (unsigned char*)malloc(9); 
strcpr((char*)replacingData,"11111111"); 

memset(replacingData,6,6); 

然後,我想從位置6替換數據,直到與replacingData originalData結束。

我怎麼能在C代碼中做到這一點?

+0

你有沒有用指針+ 6試過strcpy? – sidyll

+1

也就是說,你試圖用9個字節替換44個字節? memset應該做什麼?而不應該'strcpr'是'strcpy'? –

+0

你想'orginalData'成爲'「12345111111117」'? – pmg

回答

2
memcpy(originalData+6, replacingData, strlen(originalData)-6) 

雖然,應該指出的是,這使得假設originalData總是大於6個字符,並且replacingData率比originalData短6個字符。

+0

由於'replacementData'長度爲9個字節,所以它會讀取超出'malloc'緩衝區的末尾並導致UB。 –

+0

在這種情況下,由於'strlen(originalData)'在上面示例中是13個字符,意味着它從'replacated'拷貝了7個字節。任何進一步的內容都包含在我所寫的文字中。誠然,答案並不是很一般,但這個問題很少提及最終目標,所以很難從中總結出來。 –

+0

'replacementData'的長度與它有什麼關係? –