C中赋值的类型不兼容

ori*_*kie 1 c pointers structure function

我在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);
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过以下方式分配新值:

(*pa).a = "123";
Run Code Online (Sandbox Code Playgroud)

但是我在这一行上有错误"赋值不兼容".我究竟做错了什么?

Aus*_*oke 9

您无法使用赋值运算符将新值分配给数组,您必须将字符串的内容复制"123"到数组中.使用strcpy这样做:

strcpy(pa->a, "123");
Run Code Online (Sandbox Code Playgroud)

另一个技巧是将数组包装在一个struct(就像你在这里完成的那样),并将一个结构分配给另一个结构,以便为数组赋值.

可以这样做:

struct foo f1 = { "abc" };
struct foo f2 = { "123" };
f1 = f2;
Run Code Online (Sandbox Code Playgroud)

f1.a现在将举行"123".

另外,main应该返回一个int.