用C语言写一个函数,用":"作为分隔符,将"EC:31:4A:41:0A:0E"转换为整形数组
时间: 2024-09-21 22:10:02 浏览: 47
在C语言中,你可以创建一个函数来接收这样的字符串并将其转换为整数数组。这里是一个简单的示例,假设我们有一个只包含十六进制字符的字符串,并且每个字符代表一个字节:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,接受字符串和数组长度
void hex_to_int_array(const char *str, int arr[], int len);
int main() {
const char str[] = "EC:31:4A:41:0A:0E";
int hex_arr[6]; // 预计有六个字节
int i;
hex_to_int_array(str, hex_arr, 6); // 调用函数
for (i = 0; i < 6; i++) {
printf("hex_arr[%d]: %02x\n", i, hex_arr[i]); // 打印数组元素,格式化为两位的十六进制数
}
return 0;
}
// 将字符串转换为十六进制整数数组
void hex_to_int_array(const char *str, int arr[], int len) {
int index = 0;
while (index < len && str[index] != ':') { // 遍历到':'为止
if (isxdigit(str[index])) { // 检查是否为十六进制数字
arr[index] = strtol(&str[index], NULL, 16); // 转换并存储
index++; // 移动到下一个字符
} else {
printf("Invalid input: '%c'\n", str[index]);
break; // 如果遇到非十六进制字符,停止处理
}
}
}
```
这个函数会将输入字符串中的每个部分(直到遇到冒号前的一个字符)转换为十进制整数,然后存储到指定的数组中。如果遇到非法字符(不是十六进制),它会打印错误信息并提前结束。
阅读全文