私は機能を持っています:
func (struct passwd* pw)
{
struct passwd* temp;
struct passwd* save;
temp = getpwnam("someuser");
/* since getpwnam returns a pointer to a static
* data buffer, I am copying the returned struct
* to a local struct.
*/
if(temp) {
save = malloc(sizeof *save);
if (save) {
memcpy(save, temp, sizeof(struct passwd));
/* Here, I have to update passed pw* with this save struct. */
*pw = *save; /* (~ memcpy) */
}
}
}
func(pw) を呼び出す関数は、更新された情報を取得できます。
しかし、上記のように使用しても問題ありませんか。ステートメント *pw = *save はディープ コピーではありません。pw->pw_shell = strdup(save->pw_shell) などのように、構造体のすべてのメンバーを 1 つずつコピーしたくありません。
それを行うより良い方法はありますか?
ありがとう。