gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:35:53 27 4
gpt4 key购买 nike

我正在编写一些简单的 C 代码,通过这些代码我收到了一个数据包,然后将其放入一个字符数组中。我打算将特定范围的元素(特别是元素 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 转换为字符串,有什么想法吗?

问候 - 亚历克斯。

最佳答案

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

char number[8];

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

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

您可以美化它以“隐藏”神奇数字。

关于将特定的字符数组范围转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765409/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com