Несовместимые типы в присваивании в C - PullRequest
1 голос
/ 25 февраля 2012

У меня возникли некоторые проблемы с указателями и структурами в 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";

, но у меня есть ошибка "Несовместимые типы в назначении" в этой строке.Что я делаю неправильно?

1 Ответ

9 голосов
/ 25 февраля 2012

Вы не можете присваивать новые значения массиву, используя оператор присваивания, вы должны скопировать содержимое строки "123" в ваш массив.Для этого используйте strcpy:

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

Еще одна хитрость - также обернуть ваш массив в struct (как вы сделали здесь) и назначить одну структуру другой, чтобы назначать новые значения.в ваш массив.

Вы можете сделать:

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

f1.a теперь будет удерживать "123".

Также, mainдолжен вернуть int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...