我有这个数据
27a1bc
那应该是从串行通信/ uart收到的数据。 问题是,无论如何我可以在没有分隔符的情况下分离这些数据吗?我需要将数据更改为此
27
a1
bc
无论如何我可以在没有delimeter / strtok的情况下做到这一点吗? 这是我的代码,我卡住了。
#include <stdio.h>
#include <stdlib.h>
char usart[] = "27a1bc";
int main(void) {
// your code goes here
scanf("%c", usart[1]);
scanf("%c", usart[0]);
return 0; }
答案 0 :(得分:0)
您可以在循环中使用指向3个char
的数组的指针(尾随NUL为2 + 1)和memcpy
:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char usart[] = "27a1bc";
int main(void)
{
size_t i, n = sizeof usart / 2;
char (*token)[3];
token = calloc(n, sizeof *token);
if (token == NULL) {
perror("calloc");
exit(EXIT_FAILURE);
}
for (i = 0; i < n; i++) {
memcpy(token[i], usart + (i * 2), 2);
puts(token[i]);
}
free(token);
return 0;
}