пытаюсь понять, как работают списки ссылок; и при изменении кода примера от преподавателя я получаю ошибку «левый операнд должен быть l-value» ... вот мой код. Любая помощь приветствуется :)левый операнд должен быть l-значением, программирование C
struct node
{
char name[20];
struct node *next;
};
/*Function to allocate memory and initialize node - returns pointer to node*/
struct node*mknode(char *str)
{
struct node *np;
np = (struct node*)malloc(sizeof(struct node));
if(np)
{
np->name = *str;
np->next = NULL; /*sets the 'next' pointer to last list item to NULL*/
}
return np;
}
int main(void)
{
int i,menu,k=1,number;
char name[20];
char *str = name;
struct node* n;
struct node *head=NULL;
printf("Link Lists\n 1-Enter Data into lists\n 2-Display All List Items\n 3-Quit Program :(\n");
do
{
printf("\nPlease choose an option: ");
scanf("%d",&menu);
switch (menu)
{
case 1:
printf("\nPlease Enter A Number:");
scanf("%d",&name);
n=mknode(str); /*create new node with i as data*/
append_node(&head,n); /*add new node to end of list*/
break;
это где я получаю ошибку
np->name = *str;
после изменения типа данных структур из целого числа обугливается
благодаря
Вы обрабатываете 'np-> name' как указатель, когда это массив. Вы не можете присвоить что-то массиву. – teppic
Вы не можете назначить непосредственно массиву символов, вам нужно использовать 'strcpy' или' strncpy' –
возможный дубликат [ошибка C2106: '=': левый операнд должен быть l-значением в C] (http: // stackoverflow.com/questions/8036324/error-c2106-left-operand-must-be-l-value-in-c) –