我做了以下問題在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;
}
但這不是工作,我可以」 t似乎弄清楚了什麼是錯的。我是不是在尋找新的解決方案。我只想知道我的代碼做錯了什麼。
TIA!
請閱讀[strcat']文檔(http://en.cppreference.com/w/c/string/byte/strcat)。你需要足夠的緩衝空間在你的目的地。 – WhiZTiM
你必須分配足夠的內存給* str *來保存*#* –
*我不是在尋找新的解決方案。* - 取決於「新解決方案」的含義。不得不分配空間也可能是一種「新的解決方案」,因爲執行代碼可能與您最初編寫的代碼看起來有很大不同。 – PaulMcKenzie