我正在尝试使用malloc来获取每个单元格中包含一个字母的行和列。类似于int x [i] [j]的东西我有i *行和j *列。基本上我想做到这一点:
|
1
222
33333
4444444
我尝试使用此代码,但它给了我一个错误:赋值从指针生成一个整数而没有强制转换
A=(char**) malloc (5*sizeof(char*));
for(i=0;i<N+2;i++)`{
A[i]=(char*) malloc(7*sizeof(char));
}
for(i=0;i<3;i++){
for(j=0;j<7;j++){
left=3;
right=3;
if((j>=left)&&(j<=right)){
A[i][j]=i;
}
}
left--;
right++;
}
答案 0 :(得分:3)
我会采用不同的方法:
#define STEPS 5
#define ARRAY_SIZE STEPS*STEPS
您的情况下阵列的大小可以通过上面的公式轻松计算 现在,您只需要分配固定大小的字节,然后填充它。而已。更重要的是,下面的版本只会在简单性和性能方面超越你的版本。
int i, j;
char *array;
array = malloc(ARRAY_SIZE);
for (i = 0; i < STEPS; i++)
for (j = 0; j < (i * 2 + 1); j++)
*(array + i * STEPS + j) = i + 1;
答案 1 :(得分:1)
这个编译对我来说很好,只要我在你的代码片段中添加它;请注意,“A”被声明为“char **”类型。如果你写的话就行不通,比如说“char A [] []”。
#include <stdlib.h>
int main() {
const int N = 10;
int i, j, left, right;
char **A;
/* your code */
return 0;
}