string in struct

Liqidale

Grünschnabel
ich möchte ein kleines programm in c schreiben. dieses arbeitet mit struct und ich ahb momentan nur die erstellung einer liste mit namen und die ausgabe( zum test ob es bis dahin funkioniert). ich hab in einer funktion die zuweisung der namen zum listenelement, und da ist das problem er macht es nicht.

hier das programm wie es zur zeit aussieht:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct liste
{
char name[10];
unsigned int punkte;
struct liste *next;
};

struct liste *neu_spieler(struct liste *alt, char spieler[10]) auch mit char *spieler geht es nicht
{
struct liste *neu;
neu=(struct liste*) calloc(1,sizeof(struct liste));
neu->name = spieler; <-- hier ist der fehler
neu->punkte=0;
neu->next=alt;
alt=neu;
return alt;
}

void punkte_hinzu(struct liste *alt, char *spieler, int punkte)
{
while(alt)
{
if(!strcmp(spieler,alt->name))
{
alt->punkte=alt->punkte+punkte;
}else{
alt=alt->next;
}
}
}

void ausgabe(struct liste *start)
{
while(start)
{
printf("%s: %d\n",start->name, start->punkte);
start=start->next;
}
}

main()
{
struct liste *gesammt=NULL;
char neu[10];
int punkte, anz;
printf("Wie viel Teilnehmer?\n");
scanf("%d", &anz);
while(anz)
{
printf("Bitte namen eingeben.\n");
scanf("%s", neu);
gesammt = neu_spieler(gesammt, neu);
}
ausgabe;
}

und als fehlermeldung beim compilieren kommt:
error: incompatible types in assignment

ich hab einfach keine ahnung wesshalb.
bitte helft mir
 
Hallo,
versuch mal folgendes:
Code:
struct liste *neu_spieler(struct liste *alt, const char* spieler)
{
struct liste *neu;
neu=(struct liste*) calloc(1,sizeof(struct liste));
/*  neu->name = spieler; <-- hier ist der fehler  */
strcpy(neu->name, spieler);
neu->punkte=0;
neu->next=alt;
alt=neu;
return alt;
}
Ein Problem in deinem Code ist, dass der neue Name gar nicht kopiert wird. Ohne strcpy() geht´s kaum.
 
Zurück