C将指向char *的指针设置为char *

时间:2013-02-18 18:01:06

标签: c pointers char

我有一个功能

setCharVal(char *s, int value){
   valueStruct* makeStruct = malloc(sizeof(valueStruct));
   makeStruct->s = s;
   //set other values
}

valueStruct有一个char * s;当我打印进入函数的s时,没关系,但是当我打印makeStruct-> s时,它什么都不打印。

我试过

makeStruct->s = strdup(s);

makeStruct->s = malloc(sizeof(s);
makeStruct->s = s;

这些都不起作用;它仍然没有为makeStruct-> s打印任何内容。

我用

调用setCharVal
setCharVal(anotherStruct.s);

1 个答案:

答案 0 :(得分:0)

makeStruct->s = malloc(sizeof(s);
makeStruct->s = s;

导致内存泄漏,并且什么都没有。

将字符串复制到分配的缓冲区应该怎么做(如果strlen是字符串,或者来自函数外部,则使用s给出长度,而不是sizeof ):

// added valueStruct* because I assume you want to return it from the function
valueStruct* setCharVal(char *s,size_t s_size int value){
   valueStruct* makeStruct = malloc(sizeof(valueStruct));
   makeStruct->s = malloc(s_size);
   memcpy(makeStruct->s, s, s_size);
   // ..
   return makeStruct;
}