Просто пройдите всю строку и поместите каждый символ на свое место. Не забывайте, что строка «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
ГХИ
JKL