Проблема с этим кодом заключается в том, что строка
f.baz=qux;
Пытается присвоить массив qux
массиву baz
.В C массивы не являются переменными и им не могут быть назначены новые значения.Чтобы увидеть более простой пример, этот код:
int arr1[10], arr2[10];
arr1 = arr2; // Error!
Недопустимо, потому что вторая строка пытается присвоить второму массиву значение первого, что недопустимо в C.
Toисправьте это, вы, вероятно, захотите написать явный цикл для копирования элементов, как показано здесь:
int i;
for (i = 0; i < 6; ++i)
f.baz[i] = qux[i];
Это допустимо, потому что каждый отдельный элемент массива - это char *
, который можетбыть назначенным.
Иногда вы также видите memcpy
, используемый для назначения массивов:
memcpy(f.baz, qux, sizeof f.baz);
Копирует необработанные байты всех полей в массивах.