我正在尝试malloc一个char,使行和列在每个单元格中都有一个字母。类似于int xi,其中我有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++;
}发布于 2011-12-01 21:05:50
我会采用不同的方法:
#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;Proof。
发布于 2011-12-01 20:32:43
这对我来说编译很好,只要我在您的代码片段中添加这段代码;请注意,"A“被声明为"char **”类型。如果你写"char A“,它就不会起作用。
#include <stdlib.h>
int main() {
const int N = 10;
int i, j, left, right;
char **A;
/* your code */
return 0;
}https://stackoverflow.com/questions/8341216
复制相似问题