Конвертировать char * в 4 строки символов - PullRequest
0 голосов
/ 10 мая 2019

Я ищу портативный способ преобразования строки, хранящейся в char *, в массив, где каждые 4 символа хранятся в отдельной строке.

Чтобы уточнить, я хочу иметь возможностьзапустить цикл для каждых 4 символов в моей строке.

Пример:

char *somebinary = "0001011000100010"

будет разделен так, чтобы:

somesplitbinary[0] == "0001"
somesplitbinary[1] == "0110"
somesplitbinary[2] == "0010"
somesplitbinary[3] == "0010"

Спасибо:)

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

buff - выходной буфер

str - строка, которую нужно разделить на части

кусок - длина куска

chunks указывает на начало фрагментов (если NULL - игнорируется)

    size_t split(char *buff, const char *str, size_t chunk, char **chunks)
    {
        size_t len = strlen(str);
        size_t chlen;
        size_t chinkc = 0;

        while(len)
        {
            chlen = len >= chunk ? chunk : len;
            memcpy(buff, str, chlen);
            if(chunks)
            {
                *chunks++ = buff;
            }
            chunkc++;
            buff += chlen;
            *buff++ = 0;
            str += chlen
            len -= chlen;
        }
        return chunkc;
    }
0 голосов
/ 10 мая 2019

Я бы пошел с

somesplitbinary[0][0] = somebinary[0];
somesplitbinary[0][1] = somebinary[1];
somesplitbinary[0][2] = somebinary[2];
somesplitbinary[0][3] = somebinary[3];
somesplitbinary[0][4] = 0;
somesplitbinary[1][0] = somebinary[4];
somesplitbinary[1][1] = somebinary[5];
somesplitbinary[1][2] = somebinary[6];
somesplitbinary[1][3] = somebinary[7];
somesplitbinary[1][4] = 0;
somesplitbinary[2][0] = somebinary[8];
somesplitbinary[2][1] = somebinary[9];
somesplitbinary[2][2] = somebinary[10];
somesplitbinary[2][3] = somebinary[11];
somesplitbinary[2][4] = 0;
somesplitbinary[3][0] = somebinary[12];
somesplitbinary[3][1] = somebinary[13];
somesplitbinary[3][2] = somebinary[14];
somesplitbinary[3][3] = somebinary[15];
somesplitbinary[3][4] = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...