上位机接收到的数据为677,0,676,0,678,0,672,0,675,0,674,0,形式的字符串。如何抽取第一个第三个第五个等字符串为一个数组,第二个第四个等字符串为第二个数组
时间: 2024-09-27 14:09:02 浏览: 26
要根据您描述的形式将数据分成两个数组,首先我们需要解析字符串并根据逗号分隔符将每个数值放入对应的数组中。这里我们可以使用C语言中的字符串处理和循环结构来实现。假设我们有两个数组`values1[]`和`values2[]`,它们的大小足够容纳这些数据。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARRAY_SIZE 10 // 假设数组足够大
int main() {
char input[] = "677,0,676,0,678,0,672,0,675,0,674,0"; // 示例输入字符串
int values1[ARRAY_SIZE] = {0}; // 第一个数组
int values2[ARRAY_SIZE] = {0}; // 第二个数组
int i = 0, j = 0; // 记录当前读取的位置
// 分别读取两个数组的值
for (i = 0; i < strlen(input); i++) {
if (input[i] != ',') {
if (j % 2 == 0) { // 检查是否是奇数位置(对应第一个数组)
values1[j / 2] = atoi(&input[i]); // 将数字转换为整型并存入数组
} else { //偶数位置(对应第二个数组)
values2[j / 2] = atoi(&input[i]);
}
j++;
} else {
j++; // 遇到逗号后跳过
}
}
// 如果最后一个元素未添加,因为没有遇到逗号,那么添加它
if (j % 2 == 1) {
values1[j / 2] = atoi(&input[i]); // 只有第一个数组可能会受到影响,因为第二个数组总是偶数位置
}
// 打印结果
for (i = 0; i < ARRAY_SIZE; i++) {
printf("values1[%d]: %d\n", i, values1[i]);
}
for (i = 0; i < ARRAY_SIZE; i++) {
printf("values2[%d]: %d\n", i, values2[i]);
}
return 0;
}
```
这段代码首先初始化两个数组,然后遍历输入字符串,每当遇到逗号就切换到另一个数组的下一位。`atoi()`函数用于将字符序列转换为整数。请注意,这个示例假定输入字符串始终符合预期格式,如果实际应用中可能存在格式错误或超出数组容量的情况,请确保进行适当的错误检查和处理。
阅读全文