返回信息流在函数中调用strcpy将函数参数复制到另一个字符串,示例如下:
int test(char *src){
char *dest;
strcpy(dest,src);
}
会报segfault,那如果我想实现这种功能,怎么样写才是正确的呢
这是一条镜像帖。来源:北邮人论坛 / cpp / #84971同步于 2015/1/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于strcpy的问题
james007hm
2015/1/4镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
char*
test(char* src)
{
char* dest = (char*)malloc(sizeof(char) * strlen(src));
if(!dest)
return NULL;
strncpy(dest, src, strlen(src));
return dest;
}
int
test2(char** dest_ptr, char* src)
{
*dest_ptr = (char*)malloc(sizeof(char) * strlen(src));
if(!*dest_ptr)
return -1;
strncpy(*dest_ptr, src, strlen(src));
return strlen(*dest_ptr);
}
int
main(int argc, char* argv[])
{
//char* test_str = "aaa";
//char* test_str = "";
char* test_str = "12345678";
char* dest_str1;
char* dest_str2;
int dest_str_len;
if((dest_str1 = test(test_str)) != NULL)
{
printf("%s\n", dest_str1);
}
if((dest_str_len = test2(&dest_str2, test_str)) != -1)
{
printf("%s\n", dest_str2);
printf("%d\n", dest_str_len);
}
return 0;
}
这是什么代码风格,好新奇
【 在 fenixlee520 的大作中提到: 】
: char*
: test(char* src)
: {
: ...................