我有一个功能
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/