2012-02-25 77 views
1

我在c中的指針和結構有點問題。C中的賦值中的不兼容類型

struct foo{ 
char a[15]; 
} 

void asn_foo(struct foo *pa){ 
    (*pa).a = "123"; 
} 

main() 
{ 
    struct foo foo1[2], *pf; 
    pf = &(foo1[0]); 
    asn_foo(pf); 
} 

我試圖通過指定一個新值:

(*pa).a = "123"; 

,但我在此線路上的錯誤「不兼容的類型分配」。 我在做什麼錯?

+0

投票結束,這是一個常見問題解答:http://c-faq.com/charstring/assign.html – 2012-02-25 07:42:01

+0

這是一個好的問題,因爲除非你能指出重複的SO。 – 2012-02-25 08:19:56

+0

可能的重複[char數組在struct - 不兼容的賦值?](http://stackoverflow.com/questions/1292586/char-array-in-a-struct-incompatible-assignment) – 2012-02-25 11:23:04

回答

9

您不能使用賦值運算符爲數組賦值新值,您必須將字符串"123"的內容複製到您的數組中。使用strcpy這樣做:

strcpy(pa->a, "123"); 

另一個技巧也包裹你的數組中struct(如你在這裏所做的),並以分配新值的陣列分配一個結構到另一個。

可以信息:

struct foo f1 = { "abc" }; 
struct foo f2 = { "123" }; 
f1 = f2; 

f1.a將現在持有"123"

另外,main應返回int