以下是引用l3456在2014-8-22 10:45:12的发言:
#include
#include
#include
char* _sF(char* s, int len)
{
char* F = (char*)malloc(sizeof(char) * len);
for(int i = 0; i < len; i++)
{
F = s;
}
F[len] = '\0';
return F;
}
int main()
{
char *s="hello";
char *d;
d=_sF(s,strlen(s));
printf("%s",d);
free(d);
return 0;
}
改后的代码,谢谢大家的解答
你这个程序确实不需要用string头的,函数中也不需要传入两个参数(参考文档中库函数的原型),字符串的结束可以用遇到'\0'来判断。需要传递数组尺寸的场合,是内存块不是cz字符串的时候,比如拷贝或克隆一整块内存的时候,由于该块内存可能包含多个'\0'字符,才采用for(<length)的方式循环,否则对cz字符数组,用for(!='\0')循环就可以了。
顺便说一下,你分配的空间小了。
[
本帖最后由 TonyDeng 于 2014-8-22 20:05 编辑 ]