[問題] c關於回傳字串的問題
請大家幫幫我 我弄了一個晚上還搞不太清楚...
因為我之前是學c++ 對c的字串操作概念很差 怎麼弄就是弄不來...
是這樣的 假設我有一個funtion 要把一個十進位字串轉成二進位回傳 如下
char *toBinary(char *input) //input必介於0~7 不能用int 因有別的要求
{
int inputNumber = atoi(input);
char temp[4];
switch (inputNumber)
{
case 0:
strcpy(temp, "000");
break;
case 1:
strcpy(temp, "001");
break;
case 2:
strcpy(temp, "010");
break;
case 3:
strcpy(temp, "011");
break;
case 4:
strcpy(temp, "100");
break;
case 5:
strcpy(temp, "101");
break;
case 6:
strcpy(temp, "110");
break;
case 7:
strcpy(temp, "111");
break;
default:
return NULL;
}
return temp;
}
我知道這樣會有問題 因為temp會在function結束後 記憶體被釋放 所以會傳回垃圾
但是如果改成temp* 這樣strcpy會有問題對吧 因為temp指向的記憶體沒有初始值
那到底這種狀況 該怎麼寫呢 要是是c++的話 直接用string就可以解決了...
感謝大家 謝謝了!!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.4.235
※ 編輯: coolbeela 來自: 140.112.4.235 (03/22 20:37)
→
03/22 20:42, , 1F
03/22 20:42, 1F
推
03/22 20:43, , 2F
03/22 20:43, 2F
→
03/22 20:43, , 3F
03/22 20:43, 3F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章