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]
}