【发布时间】:2016-12-24 19:32:52
【问题描述】:
我在 Hackerrank 中做以下问题:
https://www.hackerrank.com/challenges/staircase?h_r=next-challenge&h_v=zen
基本上,代码必须打印出由“#”字符组成的右对齐“楼梯”。所以,如果输入是6,那么输出是:
#
##
###
####
#####
######
这是我想出的解决方案(用 C 语言):
#include <stdio.h>
#include <string.h>
int main(){
int n,i;
scanf("%d",&n);
char str[]="";
for(i=0;i<n;i++)
strcat(str,"#");
for(i=0;i<n;i++)
printf("%*.*s\n",n,i+1,str);
return 0;
}
但这不起作用,我似乎无法弄清楚出了什么问题。我不是在寻找新的解决方案。我只想知道我的代码做错了什么。
TIA!
【问题讨论】:
-
请阅读documentation for
strcat。您的目的地需要足够的缓冲空间。 -
你必须为 str 分配足够的内存来保存 #
-
我不是在寻找新的解决方案。 -- 取决于您所说的“新解决方案”是什么意思。必须分配空间也可能是一种“新解决方案”,因为执行此操作的代码可能看起来与您最初编写的代码大不相同。
-
“这不起作用”:你真的应该详细说明。它编译吗?它运行吗?它是段错误还是产生不正确的输出? “不工作”有上百万种变体。