有像這樣的結構。結構中的字符串。損壞
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()'的返回值,因爲它總是返回第一個參數的值。總是。 –