C - Разделение строки на массив из n подстрок без разделителя.

plt.minorticks_off()

Выключает em!

Чтобы изменить их количество / положение, вы можете использовать параметр subsx. например:

plt.xscale('log', subsx=[2, 3, 4, 5, 6, 7, 8, 9])

Из docs :

subsx / subsy: где размещать субтитры между каждым основным тиком. Должна быть последовательность целых чисел. Например, в шкале log10: [2, 3, 4, 5, 6, 7, 8, 9]

поместит 8 логарифмически разнесенных мелких тиков между каждым основным тиком.

BLOCKQUOTE>
0
задан leftail 17 March 2019 в 20:11
поделиться

2 ответа

Просто пройдите всю строку и поместите каждый символ на свое место. Не забывайте, что строка «ABC» занимает четыре байта.

Когда вы просматриваете символы входной строки, выходная строка которой они вводят, выглядит следующим образом:

0, 0, 0, 1, 1, 1, 2, 2, 2 , 3, 3, 3

Это i/3. Схема положения, в котором они находятся на выходе, выглядит следующим образом:

0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2

Это i%3. Таким образом, если i является позицией во входной строке, позиция в выходном массиве будет [i/3][i%3]. Таким образом:

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

#define MAX 512

int main(){
    char str[MAX]="ABCDEFGHIJKL";
    int count=0, i=0;
    char sub[3];
    char arr[MAX/3][4]={};

    /* Go through the string putting each character in
       its proper place */
    for (int i = 0; i < strlen(str); ++i)
        arr[i/3][i%3] = str[i];

    /* Print the strings out */
    for (int i = 0; i < (strlen(str) / 3); ++i)
        printf("%s\n", arr[i]);
}

ABC
DEF
GHI
JKL

0
ответ дан David Schwartz 17 March 2019 в 20:11
поделиться

С помощью %3c можно сканировать три символа. Это не завершает массив нулем, поэтому нельзя использовать ни одну из строковых функций, ожидающих этот нулевой терминатор. Спецификатор %n возвращает количество символов, обработанных при сканировании.
Печать можно выполнить, ограничив количество символов с помощью поля точности в %.3s

#include <stdio.h>
#include <stdlib.h>

int main( void) {

    char str[]="ABCDEFGHIJKL";
    int count = 0;
    int span = 0;
    int used = 0;
    char arr[6][3]={};

    while ( count < 6 && 1 == sscanf ( str + span, "%3c%n", &arr[count][0], &used)) {
        count++;
        span += used;//accumulate number of scanned characters
    }

    while ( count) {
        count--;
        printf ( "%.3s\n", arr[count]);//print up to three characters
    }

    return 0;
}
0
ответ дан xing 17 March 2019 в 20:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: