首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

有没有什么会实现不指定长度的二维字符串

2012-11-09 
有没有什么能实现不指定长度的二维字符串我想要实现的功能是void Set(int x,int y){char arry[x][y]}就是

有没有什么能实现不指定长度的二维字符串
我想要实现的功能是

void Set(int x,int y)
{
  char arry[x][y];
}

就是动态的指定这个二维字符串组的二维长度~~

有没有可能实现啊?

什么办法都可以的~~ 求大神帮助啊!

[解决办法]
relloc,或者malloc加memcpy。
[解决办法]
//设该数组里有m个字符串。
char **arry;
arry=(char**)malloc(sizeof(char*)*m);
char *p=(char*)malloc(sizeof(char)*xx);
arry[0]=p;
p=(char*)malloc(sizeof(char)*yy);
arry[1]=p;
......
如此给它赋满字符串。

访问时:arry[x]即可访问第x位置字符串;arry[x][y]即可访问第x位置字符串的第y位置字符。
[解决办法]
可以.
-std=c99
就ok了
[解决办法]

C/C++ code
//在堆中开辟一个3×4×5的3维int数组#include <stdio.h>#include <malloc.h>int ***p;int i,j,k;void main() {    p=(int ***)malloc(3*sizeof(int **));    if (NULL==p) return;    for (i=0;i<3;i++) {        p[i]=(int **)malloc(4*sizeof(int *));        if (NULL==p[i]) return;        for (j=0;j<4;j++) {            p[i][j]=(int *)malloc(5*sizeof(int));            if (NULL==p[i][j]) return;        }    }    for (i=0;i<3;i++) {        for (j=0;j<4;j++) {            for (k=0;k<5;k++) {                p[i][j][k]=i*20+j*5+k;            }        }    }    for (i=0;i<3;i++) {        for (j=0;j<4;j++) {            for (k=0;k<5;k++) {                printf(" %2d",p[i][j][k]);            }            printf("\n");        }        printf("---------------\n");    }    for (i=0;i<3;i++) {        for (j=0;j<4;j++) {            free(p[i][j]);        }        free(p[i]);    }    free(p);}//  0  1  2  3  4//  5  6  7  8  9// 10 11 12 13 14// 15 16 17 18 19//---------------// 20 21 22 23 24// 25 26 27 28 29// 30 31 32 33 34// 35 36 37 38 39//---------------// 40 41 42 43 44// 45 46 47 48 49// 50 51 52 53 54// 55 56 57 58 59//--------------- 

热点排行