C Funktionsdeklaration usw

hb1892

New member
25 April 2011
2
0
Hallo zusammen,

ich habe ein Problem, und zwar muss ihc ein steckhalma spiel in C schreiben, welches sich aus dem Hauptprogramm und den Unterprogrammen anzeigen.c, eingeben.c und einlesen.c zusammensetzt. Und die gegebene Object datei im_feld, in der steht ob ein feld im spielfeld liegt oder nicht.
Der Rückgabewert dieser ist '1' für Spielzug ist im Spielfeld und '0' nicht im Spielfeld.

Ich hab die Quelltexte der einzelnen Unterprogrammen schon geschrieben, aber abgesehen davon dass da vielleicht noch der ein oder andere Fehler drin ist, habe ich glaube ich ein Prblem mit der Funktionsdeklaration. Ich habe das nicht ganz verstanden.
In main.c werden eigentlich nur die einzelnen Funktionen aufgerufen. zuerst einlesen.c (dort wird nur aus einer datei das spielfeld zeilenweise eingelesen). dann anzeigen.c (hiermit wird das Spielfeld dargestellt, also es wird zeilenweise in im_feld geguckt, ob auf einem feld ein spielstein ist oder nicht oder ob es überhaupt dazu gehört und dementsprechen mit den zeichen @ und 0 das spielfeld aufgebaut).
dann wird in einer schleife mit ausgangsbedingung eingabe.c aufgerufen, wo man seinen spielzug eingibt und dieser durchgefürht wird und anschließend nochmal anzeigen.c, um das neue spielfeld anzuzeigen.

So. jetzt komme ich zu meiner Fehlermeldnug, die ich für main.c bekomme.

"main.c:13: Warnung: Übergabe des Arguments 1 von »einlesen« erzeugt Ganzzahl von Zeiger ohne Typkonvertierung
main.c:14: Warnung: Übergabe des Arguments 1 von »anzeigen« erzeugt Ganzzahl von Zeiger ohne Typkonvertierung
main.c:18: Fehler: zu viele Argumente für Funktion »eingeben«
main.c:19: Warnung: Übergabe des Arguments 1 von »anzeigen« erzeugt Ganzzahl von Zeiger ohne Typkonvertierung"

Ich bin mir ziemlich sicher dass ich u.a. die deklarierung falsch habe.
wofür steht das int vor der funktion und das, was dahinter in klammern steht?
eines muss ja das sein, womit die fkt aufgerufen wird und das andere der rückgabewert...
ich hoffe meine problemstellung wird klar. ich kann das nicht deutlicher formulieren weil ich selbst nicht so den durchblick habe.
hier ist der quelltext, ich bedanke mich shconmal falls sich jemand der sache annimmt.

PHP:
#include <stdio.h>

int anzeigen (int spielfeld);
int einlesen (int spielfeld);
int eingeben (void); 
int main (void)

{
int abbruch, spielfeld[9][9], zeile, spalte, fehler;
char richtung;

 printf("Hallo! Viel Spaß beim Steckhalma!\n");
 einlesen(spielfeld);
 anzeigen(spielfeld);

        do
        {
        abbruch = eingeben(abbruch, fehler, spielfeld, richtung);
        anzeigen(spielfeld);
        }
        while(abbruch!=1);

printf("Bis zum nächsten mal!\n");

return 0;
}
 
Zuletzt bearbeitet von einem Moderator:
PHP:
int foo(char* bar);
Funktionsname: foo
Rückgabetyp: int
Parameter: einer vom Typ char*

Deine Fehlermeldungen sind einfach zu erklären:
Du verwendest die Funktionen nicht so, wie sie deklariert sind.

Oben steht, dass eingeben() keinen Parameter erwartet. Aber du übergibst 4 Stück. Wäre ich der Compiler, wüsste ich auch nicht, was ich mit den Dingern machen soll ;)

Die Funktion einlesen() erwartet einen int-Parameter. Du übergibst ihr aber int**. Das geht sicher schief.

Mit scheint, dass die Deklarationen nicht richtig sind. Ein ganzes Spielfeld in einem Integer glaube ich kaum, dass das geht (ok, ich kenne Spiele, wo es geht, aber scheint mir hier nicht der Fall zu sein).
Woher kommen die Deklarationen? Sind die vorgegeben (8O)? Oder hast du die geraten? Wo ist der Code dafür?