我正在尝试使用动态分配的2D数组绘制网格。
这是我的代码,
#include <stdio.h>
#include <stdlib.h>
int main(void){
int i,j;
int width;
int height;
printf("");
scanf("%d %d",&height, &width);
char** arr=malloc(sizeof(char*)*height);
for ( i = 0; i<height;i++){
arr[i] = malloc(sizeof(char)*width);
}
for ( i = 0; i<height; i++){
for ( j = 0; j<width; j++){
arr[i][j] = '+' ;
printf("%c\n", arr[i][j]);
}
}
for (int i=0;i<height;i++){
free(arr[i]);
}
free(arr);
return 0;
}
如果我键入
2 2
作为高度和宽度,它将返回+
+
+
+
但我期望得到
+
+
+
+
任何帮助,将不胜感激。
最佳答案
您是在每个基准面之后而不是每行数据之后打印换行符。
更改此:
for ( j = 0; j<width; j++)
{
arr[i][j] = '+' ;
printf("%c\n", arr[i][j]); // WRONG: newline after each cell
}
对此:
for ( j = 0; j<width; j++)
{
arr[i][j] = '+' ;
printf("%c ", arr[i][j]);
}
fputc('\n', stdout); // RIGHT: newline after each row.
对于它的价值,如果您只想绘制网格,则该数组将毫无用处。只需绘制网格即可。
关于c - 在C中使用动态2D数组绘制网格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31889625/