-1

機能があります

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);
4

1 に答える 1

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

メモリリークを引き起こし、何も得られません。

文字列を割り当てられたバッファにコピーするために何をすべきか (また、長さはstrlenifsが文字列であるか、関数の外部から与えられ、 ではありません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;
}
于 2013-02-18T18:05:26.580 に答える