C中速度的字符串拆分建议

问题描述 投票:0回答:1

我有一个chars(uint8_t)数组,大小为3060。这是从读取CSV文件得出的,每行CSV文件都有51字节的数据。我希望将其拆分,以便一次获取51个字节的数据。所以我想要的是0-51,然后是52-102,等等。

然后,我打算通过我正在使用的蓝牙gatt连接将该数据发送出去。是否有可能例如对该数组的一部分进行mccpy:

memcpy(my3060_data[0-50],data_to_send_1,sizeof(data_to_send_1));

然后将值循环到3060?

因此,我希望这个过程能很快得到任何建议?

c string csv memcpy
1个回答
0
投票

使用循环会简化过程。例如:

#include <stdint.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
    uint8_t buffer[52], chunkSize, data[3060];
    uint16_t processed = 0;

    while(processed < sizeof(data))
    {
        if((processed + sizeof(buffer)) < sizeof(data))
            chunkSize = sizeof(buffer);
        else
            chunkSize = sizeof(data) - processed;

        printf("%u, ", chunkSize);

        memcpy(buffer, data, chunkSize);
        processed += chunkSize;
    }
    printf("\n");

    return 0;
}

这将产生以下内容:

$ gcc main.c -o main.exe; ./main.exe
52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 44,

注意,最后一个块是44个字节。

如何处理缓冲区取决于您。

© www.soinside.com 2019 - 2024. All rights reserved.