0

自分で定義したデータ型があり、そのデータ型のマトリックスを作成したいのですが、使用できません。

typedef char data[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";

しかし、最後の行で、同じタイプのデータを使用しても (この場合は動的ベクトルから)、互換性のないタイプというエラーが表示されます。マトリックスの作成または使用にエラーはありますか?

4

2 に答える 2

1

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 が int 型であると仮定します。これは構造体も同様です。

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

for (i=0;i<x;++i); 
{      
matrix[i]=malloc(m *sizeof(int)); //allocate each pointer

for(j=0;j<m;j++)  
matrix[i][j]=1;  or You can also use `memcpy()`  
}
于 2013-10-07T20:52:16.830 に答える
1

ここ

matrix[i][j]="example";

不正な配列に割り当てます。これを試して:

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

は安全でないことに注意してください。strcpyシステムにはより安全な代替手段を使用してください -strlcpyまたはstrcpy_s. または、 H2CO3の提案に従うこともできます。

于 2013-10-07T21:11:58.470 に答える