创建 2D 数组并在每个数据槽中填充不同字符的最简单方法是什么?

What's the easiest way to create a 2d-array and fill in different characters in each data slot?

本文关键字:字符 最简单 是什么 方法 填充 数组 2D 数据 创建      更新时间:2023-10-16

我的目标是使用2d数组创建一个50x50的"网格",并通过在网格中填充字符(如"^"answers"#")在不同位置打印不同的形状,如三角形、正方形和矩形,类似于以下内容:

*****              ^
*****             ^ ^
*****            ^ ^ ^
*****           ^ ^ ^ ^

我目前的方法是使用嵌套for循环来设置网格,创建边界,并用"填充中间空间:

for (r = 0; r < grid_h; r++) {
    for (c = 0; c < grid_w; c++) {
        grid[r][c] = ' ';
        grid[r][0] = '*';
        grid[r][grid_w - 1] = '*';
        grid[0][c] = '*';
        grid[grid_h - 1][c] = '*';

我不确定以上是否是创建我所谓的"网格"的最快/正确的方法,周围有"*"(或类似绘画区域的东西)

无论如何,我最大的问题是:在网格中填充字符最简单的方法是什么?例如,如果我想打印一个正方形,从网格[1][1]作为正方形的左上角,到网格[4][4]作为正方形的右下角,我应该如何以正确的方式打印?非常感谢。

这是最优雅的方式,可能也是最快的:)

char str[3][6] = {
        "  ^  ",
        " ^^^ ",
        "^^^^^"
    };

第二个数字必须考虑到每个字符串末尾的null终止符。它的比例不好,因为它需要你手动填充。但是结果可以让你马上看到,这很好。

如果你想以编程的方式完成它,而不是像我那样手工编写,你有两个选择:

  • 检查你是否在for循环内的矩形内
  • 使用填充矩形的新for循环:

|

for( int x = 1; x < 5; x++ ){
    for( int y = 1; y < 5; y++ ){
        grid[y][x] = 'R';
    }
}