我有一个功能:
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) 等一一复制结构的每个成员。
有没有更好的方法呢?
谢谢。