2016-11-14 75 views
-1

我正在學習結構及其操作,我該如何將特定的結構域複製到另一個?如何將多個結構域複製到另一個域?

例如

struct student 
{ 
    int rollno; 
    int standard; 
    char name[50]; 
    char add[100]; 
    int marks; 
}; 

struct studentmarks 
{ 
    int rollno; 
    char name[50]; 
    int marks; 
}; 

我怎樣才能複製rollno,名稱,標誌字段從上述結構到下面? 我已經試過memcpy但它複製整個結構我只想從上面的結構只複製特定的領域是否有任何簡單的方法來做到這一點? 感謝您的幫助!

+0

''memcpy(b.rollno,a.rollno,sizeof(int));''a'是對象類型'struct student'和'b'是'struct studentmarks'類型的對象,另一種方式是'b.rollno = a.rollno;' – Gopi

+0

'b.rollno = a.rollno;' – bsarr007

+0

使用'memcpy'技巧是一種非常確定的方式來拍攝自己的腿。你添加一個成員到結構和你好 - 所有的分配代碼應該被重寫。創建一個分配功能並使用它。 – Ari0nhh

回答

6

寫,做一個功能給你:

void copy_some_fields(studentmarks* dst, const student* src) 
{ 
    assert(dst != NULL); 
    assert(src != NULL); 

    dst->rollno = src->rollno; 
    dst->marks = src->marks; 
    strcpy(dst->name, src->name); 
} 

可以按如下方式使用它:

int main() 
{ 
    student src; 
    // initialize src... 

    studentmarks dst; 
    // initialize dst... 

    copy_some_fields(&dst, &src); 
} 
1

C支持的同一類型的struct直接複製,如s2 = s1(給定s1, s2均爲struct student)。

雖然你不能做部分副本的結構。因此,對於您的任務,您需要逐場複製,例如:

studentmarks.rollno = student.rollno; 
相關問題