char[] i error C2106: '=' : left operand must be l-value

0

Witam mam problem z pewną funkcją mojego programu:

void initialization(struct base *Beginning)
{
	struct base *e;
	struct base *Beginning2;
	struct base *element;
	element=(struct base*)calloc(1,sizeof(struct base));
	Beginning2 = element;
	element->next = NULL;
	element->previous = NULL;
	e = Beginning;
	e = e->next;
	while (e!=NULL)
	{
		e->compatibility = 0;
		element->next = Add_Record(element);
		element = element->next;
56		element->cName = e->cName;
57		element->cSurname = e->cSurname;
58		element->cMobile = e->cMobile;
		element->compatibility = e->compatibility;
		e = e->next;
	}
}

Przy kompilacji wyskakuje mi taki błąd: "error C2106: '=' : left operand must be l-value" dotyczy on linijek 56, 57, 58. Nie dotyczy on linijki 59. cName, cSurname, cMobile oraz compatibility jak się łatwo domyśleć są elementami struktury. Moim zamierzeniem było stworzenie drugiej listy dwukiernukowej (element, beggining2), którą mógłbym wypełnić wartościami z pierwszej listy (e, begging) a następnie na niej operować. Moglibyście coś poradzieć?

0

Ale w czym problem? Czy my jesteśmy jasnowidzami? Kompilator twierdzi że np. element->cName nie jest l-wartością, czyli nie jest czymś do czego mozna coś wpisać. Jeśli nie pokażesz nam jak wygląda owa struktura to ciężko będzie cokolwiek poradzić.

0

Przepraszam najmocniej, już naprawiam mój błąd:

struct base
{
	char cName[20];
	char cSurname[20];
	char cMobile[15];
	int compatibility;
	struct base *next, *previous;
};

wskaźniki next oraz previous są wskaźnikami na następną i poprzednią instancję struktury. Na podstawie tej struktury tworzę listę dwukierunkową.

0

No i jest tak jak myślałem.
NIE MOŻNA TAK PRZYPISYWAĆ C-STRINGÓW.
Od tego są funkcje jak strcpy()
http://www.cplusplus.com/reference/clibrary/cstring/strcpy/
Czyli zamiast

element->cName = e->cName;

Które jest absolutnie niepoprawne, powinno być:

strcpy(element->cName,e->cName)

1 użytkowników online, w tym zalogowanych: 0, gości: 1