我正在编写一些简单的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转换为字符串的任何想法,因为我需要用于特定目的的数字?
问候 - 亚历克斯。
答案 0 :(得分:1)
如果您完全确定偏移量和长度始终有效,请使用memcpy()
:
char number[8];
memcpy(number, node_EUI + 9, 4);
number[4] = '\0';
以上是为了清晰而优化的。许多编译器会优化对memcpy()
的调用,但这是一种明确表达“复制四个字符”的好方法。最后一行在四个字符后终止number
,确保它是一个有效的字符串。
你可以美化它来“隐藏”神奇的数字。