2014-03-31 144 views
0

我正在寫一些簡單的C代碼,從而我收到了一個數據包,然後將它放在一個char數組中。我打算將特定元素範圍的元素16到31轉換爲字符串。將特定的字符數組範圍轉換爲字符串

我明白strncpy可以使用,但這是在你知道數組的確切內容和需要從數組中複製的「字符串」/字符集的情況下。

在我的情況下,數組元素(請參閱下面我的代碼中標題爲analysis_buffer的數組)是隨機生成的,但我確定元素6到9將始終包含數字,這是我希望的數組範圍轉換成一個字符串。

下面是我的代碼和代碼下面是node_EUI [j]的數組的內容:

int j, ANALYSIS_BUFFER_SIZE = 16; 
char node_EUI[ANALYSIS_BUFFER_SIZE]; 
char analysis_buffer[ANALYSIS_BUFFER_SIZE]; 

// 
void convertspecificarrayelements(); 

// 
void convertspecificarrayelements() { 

    // 
    for (j = 0; j < ANALYSIS_BUFFER_SIZE; j++) { 

     // 
     node_EUI[j] = analysis_buffer[j]; 

     // 
     printf("node_EUI[%u]: %c\n", j, node_EUI[j]); 
    } 

    // Here I would like to convert elements 6 to 9 of the node_EUI[j] array to a string as I need the 
    // digits for a specific purpose 

} 

// 
int main() { 

    analysis_buffer[0] = 'Q'; 
    analysis_buffer[1] = 'W'; 
    analysis_buffer[2] = 'E'; 
    analysis_buffer[3] = 'R'; 
    analysis_buffer[4] = 'T'; 
    analysis_buffer[5] = 'Y'; 
    analysis_buffer[6] = '1'; 
    analysis_buffer[7] = '2'; 
    analysis_buffer[8] = '3; 
    analysis_buffer[9] = '4'; 
    analysis_buffer[10] = 'Q'; 
    analysis_buffer[11] = 'W'; 
    analysis_buffer[12] = 'E'; 
    analysis_buffer[13] = 'R'; 
    analysis_buffer[14] = 'T'; 
    analysis_buffer[15] = 'Y'; 

    // 
    convertspecificarrayelements(); 

} 

上我希望如何元件6轉換爲node_EUI [j]的陣列的9任何想法到字符串,因爲我需要的數字爲特定的目的?

問候 - 亞歷克斯。

回答

1

如果你是完全肯定的偏移量和長度始終是有效的,只要使用memcpy()

char number[8]; 

memcpy(number, node_EUI + 9, 4); 
number[4] = '\0'; 

爲清晰起見,上述被優化。許多編譯器會優化對memcpy()的調用,但這是清晰表達「四個字符被複制」的體面方式。最後一行在四個字符後終止number,確保它是一個有效的字符串。

你可以把它美化來「隱藏」魔法數字。

相關問題