作者coolbeela (今年要冲一发)
看板C_and_CPP
标题[问题] c关於回传字串的问题
时间Sun Mar 22 20:37:21 2009
请大家帮帮我 我弄了一个晚上还搞不太清楚...
因为我之前是学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)
1F:→ james732:1. 把输出当作参数传进来 2. 用 malloc (记得要free) 03/22 20:42
2F:推 legnaleurc:一般的设计是传入目的参数 03/22 20:43
3F:→ legnaleurc:char * strxxx( char * src, const char * dst ); 03/22 20:43