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

标签 c multidimensional-array grid

我正在尝试使用动态分配的二维数组绘制网格。 这是我的代码,

#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.

无论其值(value)如何,如果您只想绘制网格,则该数组完全没有用处。只需绘制网格即可。

关于c - 在 C 中使用动态二维数组绘制网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31889625/

相关文章:

c - 用C写shell,如何区分交互模式和批处理模式

ruby - 二维数组 - 求和 'row' 并添加为数组的新元素

javascript - “裁剪”二维数组?

java - 二维数组串联

ios - 类似于 CGPoint 的类,但带有整数(用于表示网格中的位置)

c - 释放使用 malloc 创建的结构,其成员也有一个 malloc

c - 从链表中删除一个节点

css - 如何在 3 列模板中将 2 列居中

c - 格式指定类型 'char *' 但参数的类型为 'int' ,我在这里犯了什么错误?

java - 计算所有节点仅被触及一次的节点之间的所有可能路线? (旅行推销员)