2013-02-18 120 views
-1

我有一个函数C设定指针一个char *为char *

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

valueStruct具有一个char * S;当我打印进入该功能的时候,这很好,但是当我打印makeStruct->时,它不打印任何东西。

我已经试过

makeStruct->s = strdup(s); 

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

既不这些工作的;它仍然不会为makeStruct->打印任何内容。

我打电话setCharVal与

setCharVal(anotherStruct.s); 
+1

显示其中' s'来自并尝试打印'makeStruct-> s'的地方。问题可能不是赋值语句。 – aschepler 2013-02-18 18:03:55

回答

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

谢谢,我认为这可能已经成功了! – winepretzel 2013-02-18 18:14:02