Incompatible types in assignment

Hallo,
ich habe hier ein kleines Programm, das nicht kompiliert werden will.
Vielleicht hat jemand Zeit und Lust kurz einen Blick drauf zu werfen, um mir zu sagen, warum er den Pointer nicht gleich dem anderen Pointer setzen will.
bei dieser Zeile:
h=in§;
sagt kompilier dass: incompatible types in assignment
Ich habe schon alles mögliche durchgespielt und gesucht und leute gefragt, keiner weiss eine antwort.
Kurz zum Programm:
Es sollen komplexe Zeilen mit Real und Imaginärteil eingegeben werden, dann soll der Zeiger auf next zeigen (praktisch das nächste element) und wieder in die While-schleife zurückkehren. Das Problem ist nur, dass nach der ersten Eingabe der Zeiger sich nicht gleich dem anderen Zeiger setzen will…
Der Fehler liegt anscheinend in der in() funktion.
Ach und das Mainprogramm darf nicht verändert werden.

#include

struct complex
{
float x, y;
struct complex *next;
};
struct complex array[100];
struct complex in(struct complex *p)
{
p=array;
printf(„Bitte den Realteil eingeben: „);
scanf(“%f“, &p->x);
printf(„Bitte den Imaginaerteil eingeben: „);
scanf(“%f“, &p->y);
p=p->next;
return *p;
}
main()
{
/*Initialisierung und Titel */
struct complex *p=0, *h;
unsigned char c=‚j‘;
printf(„Demo: Lineare Liste komplexer Zahlen\n“);

/*Eingabe*/
while(c==‚j‘)
{
h=in§;
p = h;
printf("? Weiter mit „j“: „);
scanf(“%1s", &c);
}
/*Verarbeitung: entfällt*/
getch();
return 0;
}

Hallo,

Vielleicht hat jemand Zeit und Lust kurz einen Blick drauf zu
werfen, um mir zu sagen, warum er den Pointer nicht gleich dem
anderen Pointer setzen will.
bei dieser Zeile:
h=in§;
sagt kompilier dass: incompatible types in assignment

Ich vermute mal, der Compiler gibt auch
Hinweise darauf, *was* falsch läuft.

Der Fehler liegt anscheinend in der in() funktion.

struct complex array[100];
struct complex in(struct complex *p)

muß nach Deiner Konvention in main()

 struct complex **\*** in(struct complex \*p)

sein.

{
p=array;
printf(„Bitte den Realteil eingeben: „);
scanf(“%f“, &p->x);
printf(„Bitte den Imaginaerteil eingeben: „);
scanf(“%f“, &p->y);
p=p->next;
return *p;

muß dann entsprechend

 return p;

heissen.

}

Ansonsten sieht das nach ziemlichem
Kuddelmuddel aus :wink: Bist Du sicher, daß
das Programm macht, was es soll?

Grüße

CMБ

aber wieso muss ein Sternchen vor die Funktion?

das main() programm ist von unserem Proffesor, ist so eine Aufgabe… und das war ja jetzt nur gekürzte fassung, dann kommt noch ein Ausgabeteil, der nicht so richtig funktionieren will…

aber wieso muss ein Sternchen vor die Funktion?

So gibt die Funktion nur einen Zeiger auf die Struktur zurück.
Sonst würde sie die Struktur zurückgeben.
Gruß
re-G