2013-12-18 64 views
0

試圖將input_緩衝區轉換爲output_中的十六進制表示形式。簡單的操作遇到困難 - 將字符串插入到字符串中。我決定將output_指針移動到每個sprintf後2個位置,並在末尾移動指向起始位置的指針。但看起來這可能是危險的,因爲根據我的理解,我將陣列的位置移動到另一個可能用於其他目的的存儲區域。我對嗎?如何解決字符串插入問題呢?將字符插入到cstring中

void toHexS(const char* input_, char* output_) 
{ 


    int i=0; 

    //for(i = 0; i < 5; i++) 
    while(input_[i]!=0) 
    { 
     stmcpy(); 
     sprintf(output_,"%02x", input_[i]); 
     printf("%02x\n", input_[i]); 
     output_++; 
     output_++; 

     i++; 
    } 

    int j; 
    for(j = 0; j<i*2 ; j++) 
    { 
    output_--; 
    } 



} 
+0

問題是什麼,問題是什麼?我假設你從這個函數的範圍以外分配內存。該功能無法知道分配的大小。你是否必須重用這個函數範圍以外的結果? (我是這麼認爲的)。 http://sscce.org/ – Sebastien

+0

是否要將普通字符串轉換爲十六進制字符串? – Chinna

+0

是的,我需要將普通字符串轉換爲十六進制字符串 – vico

回答

0

從您的問題不確定問題到底是什麼。你的代碼,雖然凌亂,應該工作。您不需要致電stmcpy,它什麼也不做。

最後不需要for循環。調用程序有一個指向output_的指針,而C通常是按值傳遞的,所以沒關係。

而不是做output_++兩次,使用output_ += 2;

for循環比while循環更合適。 for (i=0; input[i] != '\0'; i++)