c - C "for"循环出现问题 - 不会迭代过去的第一个

标签 c loops for-loop cs50

我正在解决 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, "##");

关于c - C "for"循环出现问题 - 不会迭代过去的第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37212821/

相关文章:

c - 为什么可以将 int 的地址视为指向 int 的指针?

php - 选中时从表中插入多个数组项

java - 如何发起重试 for 循环

tensorflow - 使用 ImageDataGenerator 进行无限循环

java - 用 "X"画一棵圣诞树

java - 为什么这个 for 循环不循环多次?

C 的汇编覆盖率

C 随机矩阵,数字介于 0 和 9 之间

c - 如何在不使用任何现成的库函数的情况下计算两个日期之间的差异?

excel - "Object Variable or With Block Variable not Set"