有像这样的结构。结构中的字符串。损坏
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);
任何想法?
'如果死( “名称复制失败”)'......我闻到PHP(RES!):d – LihO
'空模(为const char *消息){ \t如果(错误){ \t \t PERROR(消息); (“ERROR:%s \ n”,message);}} \t} \t exit(1); }' 来自PHP :) –
没有必要检查'strncpy()'的返回值,因为它总是返回第一个参数的值。总是。 –