如何在C语言中使用动态矩阵

如何在C语言中使用动态矩阵,c,dynamic,matrix,malloc,C,Dynamic,Matrix,Malloc,我有一个自己定义的数据类型,我想创建该数据类型的矩阵,但我不能使用它 我有 typedef字符数据[10] data **matrix; matrix=(data**)malloc(n*sizeof(data*)); for (i=0;i<x;++i) matrix[i]=(data*)malloc(m*sizeof(data)); matrix[i][j]="example"; 数据**矩阵; 矩阵=(数据**)malloc(n*sizeof(数据*); 对于(i=0;i假设

我有一个自己定义的数据类型,我想创建该数据类型的矩阵,但我不能使用它

我有 typedef字符数据[10]

data  **matrix;
matrix=(data**)malloc(n*sizeof(data*));
for (i=0;i<x;++i)
    matrix[i]=(data*)malloc(m*sizeof(data));
matrix[i][j]="example";
数据**矩阵;
矩阵=(数据**)malloc(n*sizeof(数据*);

对于(i=0;i假设estado是char类型

estado  **matrix = malloc(n*sizeof(char*));  //allocte number of pointers 

for (i=0;i<x;++i);       
matrix[i]=malloc(m); //allocate each pointer
matrix[i]="example";
estado**matrix=malloc(n*sizeof(char*);//分配指针数
对于(i=0;i此处

您分配给数组是非法的。请尝试以下操作:

strcpy( matrix[i][j], "example" );

请注意,
strcpy
是不安全的,请为您的系统使用更安全的替代方案-
strlcpy
strcpy\u
。或者您可以遵循H2CO3的建议。

显示
estado
的代码为什么要使用
数据变量?此代码没有任何意义。在最后一行中,您是将字符串文字
“示例”
分配给定义为的任何
estado
对象。在任何情况下都可能是错误的抱歉,已修复。我使用数据类型是因为我想创建一个矩阵,其中每个元素都是一个小字符串在标记为
c
的每个问题下都应该有一个“自动添加注释”按钮。)这是今天作者犯了这个错误的第五个(大约)问题。在任何情况下,人们都应该更喜欢分配一个真正的多维数组,比如:
char(*arr)[size_y]=malloc(size_x*sizeof*arr);
Please
memcpy()
并手动NUL终止。这将很快导致缓冲区溢出。(这也适用于您,@Jack。)
matrix[i][j]="example";
strcpy( matrix[i][j], "example" );