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