将特定的char数组范围转换为字符串

时间:2014-03-31 15:15:33

标签: c

我正在编写一些简单的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();

}

关于我如何将node_EUI [j]数组的元素6到9转换为字符串的任何想法,因为我需要用于特定目的的数字?

问候 - 亚历克斯。

1 个答案:

答案 0 :(得分:1)

如果您完全确定偏移量和长度始终有效,请使用memcpy()

char number[8];

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

以上是为了清晰而优化的。许多编译器会优化对memcpy()的调用,但这是一种明确表达“复制四个字符”的好方法。最后一行在四个字符后终止number,确保它是一个有效的字符串。

你可以美化它来“隐藏”神奇的数字。