Отказ от ответственности: я не совсем понял, о чем идет речь; -)
Вы можете просто скопировать строку в место, на которое указывает
константа массива для двумерного массива:
...
char array[2+1][4];
memcpy((void *)array, TEXT, sizeof(TEXT));
...
Но это не даст автоматически масштабируемых массивов. Может быть, вы думаете о следующем:
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
char **matrixify(char text[], int vert, int horiz)
{
int i=0;
char **m = (char **)calloc(vert, sizeof(char*));
do m[i] = text + i * horiz; while(i++ < vert);
return m;
}
int main()
{
int x, y;
/* char t[] = "this is a really long text with many words and stuff"; */
char t[] = "GOODMORN";
int edge = 1+(int)sqrt((double)strlen(t)); /* make a square from text */
/* int vert = edge, horiz = edge; */ /* Auto size detection */
int vert = 2, horiz = 4;
char *textbuf = (char *)calloc(vert, horiz); /* not always 0-terminated */
char **matrix = matrixify(strncpy(textbuf, t, vert*horiz), vert, horiz);
for(y=0; y<vert; y++) {
for(x=0; x<horiz; x++) printf("%c ", matrix[y][x]);
printf("\n");
}
/* prints:
G O O D
M O R N
through matrix[i][j] */
return 0;
}
, что приводит к разметке вашей памяти, но выглядит сложным
для проблемного состояния, , но это C ...
С уважением
БВУ