【发布时间】:2013-12-28 16:47:21
【问题描述】:
我正在尝试制作类似于 strlen(str,str) 函数(我有一个返回字符串)的东西来学习使用指针和 new 运算符,这是我的代码:
char* strcat(char str1[], char str2[]){
int len=strlen(str1)+strlen(str2);
char* sfin = new char[len];
int i=0;
for (i=0;i<strlen(str1);i++)
*(sfin+i)=*(str1+i); //this could be *(sfin+i)= str1[i]
for (int j=0;j<strlen(str2);j++)
*(sfin+j+i)=*(str2+j); //this could be *(sfin+i+j)= str2[j]
return sfin;
}
它可以工作,除了 new 运算符分配了太多内存(或者它是对的吗?),从变量观察者中可以看出:
附:在 main() 函数中,我使用 gets(char*) 检索 str1 和 str2,并使用 puts(char*) 放置它们。 len 有正确的内容 (9)。
结果可能多种多样:有时它会放入正确的字符串,有时只放入两个“奇怪”字符,具体取决于参数。
【问题讨论】:
-
如果你使用 C++,为什么不直接使用
std::string而不必担心内存管理? -
首先,您似乎没有输入空字符 (
'\0') :-) -
@AdamRosenfield 我不知道,这是作业,我的知识很少