我试图实现strcpy()标准函数,作为一个函数采取两个指针字符,并不返回任何内容。strcpy()实现..如何初始化函数本身的函数传递指针
我已经完成了正确的工作,但为了避免出现分段错误,我必须在将其分配给strcpy()函数之前初始化主函数中的“dest”指针。我试图在strcpy()函数本身做这个初始化,但不能因为我按值发送指针(字符地址),所以我不能在函数中改变它,尽管我可以改变它指针指向的不是点本身。
可能是将指针传递给指向strcpy()函数的指针的解决方案,但我希望它像标准函数一样工作,指向字符而不是指向指针的指针。
简而言之,如何通过初始化strcpy()函数中的指针而不是主函数来避免细分错误?
我希望我的问题是清楚的
这里是我的代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void myStrcpy(char *dest,const char *src){
while(*src)
{
*dest = *src;
dest++;
src++;
}
*dest='\0';
}
int main(void){
char *src="Salahuddin";
int len=strlen(src);
char *dest=(char*)malloc(len);
myStrcpy(dest,src);
printf("%s",dest);
return 0;
}
你似乎试图执行'strdup',这是一个不同的接口。 –
另外,'strcpy'具有不同的签名,它会返回'dest'字符串。这将有可能返回一个新分配的char []。 –
'... =(char *)malloc(len)'应该是...... ... = malloc(len + 1)'。即不要强制返回(m/c)alloc(),并且您需要额外的字节作为空终止符。 – ryyker