在C中使用动态二维数组绘制网格



我正在尝试使用动态分配的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("%cn", 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("%cn", 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.

,不管它的价值是什么,如果你想做的只是画一个网格,这个数组是完全无用的。

相关内容

  • 没有找到相关文章

最新更新