我正在处理CS50的问题,在该问题中,必须根据高度的用户输入在#之外创建一个金字塔。这是我到目前为止的内容,但是对于高度8,它仅迭代一次。对于7的高度,我得到大约四行,只是一堆#

//Create GetPosInt() function
int GetPosInt(void) {
    int n = GetInt();
    while (n <= 0) {
        printf("That won't work...\nRetry: ");
        n = GetInt();
    }
    return n;
}

int main(void) {
    printf("How high should Mario's pyramid be?\nHeight: ");
    int h = GetPosInt();
    while (h > 23) {
        printf("Try something smaller!\nHeight: ");
        h = GetPosInt();
    }
    char str[] = "##";
    char strad[] = "#";
    int l = h + 1;
    for (int i = 0; i < h; i++) {
        printf("%*s\n", l, str);
        strcat(str, strad);
        return 0;
    }
}


这是我第一次尝试使用string.h库。
请仅提供有关修复代码的提示-我敢肯定还有其他解决方法,但是,如果有可能,我想在课堂上继续使用它!

最佳答案

您的str数组/ C字符串没有空间来连接除2个字符之外的其他字符。

作为一个小小的改变,你可以做:

char str[128] = "";
strcat(str, "##");

10-04 13:50