有这样的结构。
struct Address {
int id;
int set;
char name[MAX_DATA];
char email[MAX_DATA];
};
以及设置地址的函数。
void Database_set(struct Connection *conn, int id, const char *name, const char *email) {
struct Address *addr = &conn->db->rows[id];
if(addr->set) die("Address already set");
addr->set = 1;
char *res = strncpy(addr->name, name, MAX_DATA);
if(!res) die("Name copy failed");
*res = strncpy(addr->email, email, MAX_DATA);
if(!res) die("Email copy failed");
}
但是 addr->name 的第一个字符在此行之后被损坏。
*res = strncpy(addr->email, email, MAX_DATA);
有任何想法吗?