的指针设置为char

的指针设置为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->打印任何内容。

我打电话给setCharVal

setCharVal(anotherStruct.s);

最佳答案

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;
}

关于c - C将指向char *的指针设置为char *,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14942529/

10-11 16:36