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

c语言中动态分配二维字符数组有关问题?(初学者急求)

2012-02-03 
c语言中动态分配二维字符数组问题?(菜鸟急求)#includestdio.h #includestdlib.h#includeMALLOC.H#in

c语言中动态分配二维字符数组问题?(菜鸟急求)
#include   "stdio.h "
#include   <stdlib.h>
#include   <MALLOC.H>
#include   <string.h>

void   main()
{
int   nrows=10;
                  int   ncolumns=10;
int   i,j;
char***   array1=   malloc(nrows   *   sizeof(char**));
for(i   =   0;   i   <   nrows;   i++)
                          array1[i]   =   malloc(ncolumns   *   sizeof(char[100]));
for(i=0;i <10;++i)
for(j=0;j <10;++j)
{
strcpy(array1[i][j], "abc ");
}

printf( "%s\n ",array1[1][1]);
}


//哪位高手帮我看看问题出在那里?不胜感谢!

[解决办法]
#include "stdio.h "
#include <stdlib.h>
#include <MALLOC.H>
#include <string.h>

void main()
{
int nrows=10;
int ncolumns=10;
int i,j;
char*** array1= (char ***)malloc(nrows * sizeof(char**));//malloc返回的是void*类型需要强制转换成你需要的类型
for(i = 0; i < nrows; i++)
array1[i] = (char **)malloc(ncolumns * sizeof(char[100]));
for(i=0;i <10;++i)
for(j=0;j <10;++j)
{
strcpy(array1[i][j], "abc ");
}

printf( "%s\n ",array1[1][1]);
}
[解决办法]
to: ls
C语言里面对这个不报错,lz的是运行时错误,而不是编译时错

to:lz
这种代码还真是难读,看了半天。。。改成下面这样就没有问题了:
void main()
{
int nrows=10;
int ncolumns=10;
int i,j;
char*** array1= malloc(nrows * sizeof(char**));
for(i = 0; i < nrows; i++)
array1[i] = malloc(ncolumns * sizeof(char[100]));
for(i=0;i <10;++i)
for(j=0;j <10;++j)
{
strcpy(&array1[i][j], "abc "); // array1[i][j] to &array1[i][j]
}

printf( "%s\n ",array1[1][1]); // array1[1][1] to &array1[1][1]
}

热点排行