拆分没有分隔符的char数据

时间:2016-11-04 06:19:29

标签: c

我有这个数据

  

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; }

1 个答案:

答案 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;
}