我有一个
char** color;
我需要复制
的值*color;
因为我需要将*颜色传递给一个函数但是该值将被修改,我不能修改原始值。
你会怎么做?
整个代码看起来像这样
Function1(char** color)
{
Function2(char * color);
return;
}
我必须提到函数1和2中的指针用作返回值。
答案 0 :(得分:1)
版本1
functionTwo( const char* color )
{
//do what u want
}
functionOne( char** color )
{
functionTwo( *color );
}
或第二版
functionTwo( const char* color )
{
//do what u want
}
functionOne( char** color )
{
char* cpMyPrecious = strdup( *color );
functionTwo( cpMyPrecious );
free( cpMyPreciuos );
}
HTH
马里奥
答案 1 :(得分:0)
我建议使用strncpy()来复制值。你指向的字符串只在内存中一次,而另一个指向它的指针并不能解决你的问题。
答案 2 :(得分:0)
假设您没有strdup()
可用(它不是标准库的一部分),您可以这样做:
#include <stdlib.h>
#include <string.h>
...
void function1(char **color)
{
char *colorDup = malloc(strlen(*color) + 1);
if (colorDup)
{
strcpy(colorDup, *color);
function2(colorDup);
/*
** do other stuff with now-modified colorDup here
*/
free(colorDup);
}
}