[問題] Call function return padding string
開發平台(Platform): (Ex: Win10, Linux, ...)
Win10
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC Eclipse
問題(Question):
1. string AddPadding(int PadLen, string Str)
{
char buff[100];
snprintf(buff, 100, " %*s", PadLen, Str.c_str());
return buff;
}
2. string AddPadding(int PadLen, string Str, char* buff)
{
snprintf(buff, 100, " %*s", PadLen, Str.c_str());
return buff;
}
3. string AddPadding(int PadLen, string Str, char* buff)
{
int PadCount = PadLen - Str.length() + 1;
for (int Index = 0; Index < PadCount; Index++)
{
buff[Index] = ' ';
}
strcpy(buff + PadCount, Str.c_str());
return buff;
}
Note: (2)(3)外部宣告char buff[100];
想請問一下,第一種寫法是可行的嗎?
還是會有機會造成buff的空間釋放後資料錯誤?
第二種和第三種寫法應該是結果相同且能保證回傳的資料沒問題吧...
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.229.118
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1553739666.A.F46.html
→
03/28 10:24,
7年前
, 1F
03/28 10:24, 1F
→
03/28 10:26,
7年前
, 2F
03/28 10:26, 2F
→
03/30 11:15,
7年前
, 3F
03/30 11:15, 3F
→
03/30 11:15,
7年前
, 4F
03/30 11:15, 4F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章