在二维字符数组中绘制三角形

Drawing a triangle in a 2-dimensional char array

我正在尝试使用 2d 字符数组作为形状的 table,但我在尝试绘制三角形时遇到了问题。给定三角形顶部的位置及其高度,我的函数应该通过更改我已经分配给 ' ' initially.This 的元素在 25 行 80 列的字符数组中绘制一个三角形是我目前所拥有的:

int i, j;
for(i=0; i<height; i++){
    for(j=-i; j<=i; j++){
        screen[x+i][y+j]=ch;
    }
}    

screen 是我的二维字符数组的名称。

例如,高度为 3 的三角形应该是这样的:

  *
 ***
*****    

但由于某些原因它似乎不起作用,我不明白为什么。

对于没有按原样阐明我的代码的作用,我深表歉意。 我有以下功能来打印我的二维数组:

void PrintScreen(){
    int i, j;
    for(i=0; i<SCREEN_HEIGHT; i++)
    {
        for(j=0; j<SCREEN_WIDTH; j++)
        {
            printf("%c", screen[i][j]);
        }
        printf("\n");
    }
} // end-PrintScreen

我发现我做错了什么。由于我犯了一个错误,我之前运行该程序时看不到任何内容。如果其他人需要帮助解决同样的问题,上面的代码应该可以正常工作。

这个从您的代码片段中浓缩而来的极简示例对我有用:

#include <stdio.h>

#define SCREEN_HEIGHT 25
#define SCREEN_WIDTH 80

char screen[SCREEN_HEIGHT][SCREEN_WIDTH];

int main(int argc, char* argv[])
{
    int height = 10;
    int x = 1, y = 10;

    int i, j;
    for(i=0; i<height; i++){
        for(j=-i; j<=i; j++){
            screen[x+i][y+j]='*';
        }
    }    

    for(i=0; i<SCREEN_HEIGHT; i++) {
        for(j=0; j<SCREEN_WIDTH; j++) {
            printf("%c", screen[i][j]==0 ? ' ' : '*');
        }
        printf("\n");
    }

}

但是你的 x 轴和 y 轴似乎颠倒了。 X 通常从左到右,Y 从上到下。