Zum Inhalt springen

Übergabe von arrays an Funktionen


chrissiw

Empfohlene Beiträge

Hallo,

ich möchte gerne in einer Unterfunktion eine Text-Datei auslesen und die Werte aus dieser Textdatei in ein Array schreiben.

In der Text-Datei sind Bestückungsreihenfolgen für 3 verschiedene Ventilblöcke hinterlegt, die Text-Datei sieht so aus:

Typ 1: gruen rot blau pink pink - - - - rot rot rot pink gruen rot gruen

Typ 2: rot rot rot rot rot - - - - rot rot rot pink gruen rot pink

Typ 3: pink pink - - - - - - - rot rot rot pink gruen rot rot

Das Array, in welches der ganze Spaß geschrieben werden soll, ist 3-dimensional, ich habe so so definiert:

char bestueckung[3][16][10];

-> d.h. 3 verschiedene Ventilblöcke, 16 Positionen pro Ventilblock, 10 "Buchstaben" pro Position.

Das auslesen an sich funktioniert, ich weiß nur nicht so ganz, wie ich die Übergabe realisieren soll.

Das Array "bestueckung" habe ich in meinem Hauptprogramm definiert.

Aufgerufen wird die Auslese-Funktion wie folgt:

ausles(bestueckung);

Die Funktion ausles habe ich wie folgt definiert:

void ausles(char* datei_best)

{

char dat_best[80];

char dummy[80];

FILE *eingabe;

sprintf(dat_best,"bestueckung.txt");

eingabe = fopen(dat_best, "r");

if(eingabe == NULL)

{

printf("\n");

printf("\nDatei konnte zum Lesen nicht geoeffnet werden!");

exit(1);

}

fscanf(eingabe, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s", &dummy, &dummy, &datei_best[0][0], &datei_best[0][1],

&datei_best[0][2],&datei_best[0][3],&datei_best[0][4],&datei_best[0][5],&datei_best[0][6],&datei_best[0][7],&datei_best[0][8],

&datei_best[0][9],&datei_best[0][10],&datei_best[0][11],&datei_best[0][12],&datei_best[0][13],&datei_best[0][14],&datei_best[0][15]);

fscanf(eingabe, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s", &dummy, &dummy, &datei_best[1][0], &datei_best[1][1],

&datei_best[1][2],&datei_best[1][3],&datei_best[1][4],&datei_best[1][5],&datei_best[1][6],&datei_best[1][7],&datei_best[1][8],

&datei_best[1][9],&datei_best[1][10],&datei_best[1][11],&datei_best[1][12],&datei_best[1][13],&datei_best[1][14],&datei_best[1][15]);

fscanf(eingabe, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s", &dummy, &dummy, &datei_best[2][0], &datei_best[2][1],

&datei_best[2][2],&datei_best[2][3],&datei_best[2][4],&datei_best[2][5],&datei_best[2][6],&datei_best[2][7],&datei_best[2][8],

&datei_best[2][9],&datei_best[2][10],&datei_best[2][11],&datei_best[2][12],&datei_best[2][13],&datei_best[2][14],&datei_best[2][15]);

fclose(eingabe);

Wo liegt mein Denkfehler? Habe ich vielleicht die Pointer falsch definiert?

Über Hilfe wäre ich dankbar,

Grüße

Chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du hast völlig recht, das Problem liegt bei der Deklaration der Funktion.

In C werden Arrayas immer als Referenzen, also als Pointer übergeben.

//Edit: du hast die Sprache nicht erwähnt, aber ich vermute in C++ stimmt meine Aussage auch

Mit

void ausles(char* datei_best)
erwartet deine Prozedur ein Array mit Pointern und kein Pointer auf ein Array. Richtig müsste es so heißen:
void ausles(char datei_best[3][16][10])

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

danke für das Feedback.

Ist nicht c++, soll in C programmiert werden.

Wenn ich die Funktion aufrufe, so wie du es gepostet hast, kriege ich beim Compilieren einen Error, bezogen jeden Aufruf von

&datei_best[][] (z.B. &datei_best[0][13])

Fehlermeldung: Type error - pointer expected.

Grüße,

Chris

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich die Funktion aufrufe, so wie du es gepostet hast, kriege ich beim Compilieren einen Error, bezogen jeden Aufruf von

&datei_best[][] (z.B. &datei_best[0][13])

Fehlermeldung: Type error - pointer expected.

Wie du sie aufrufen sollst, hat Zakum gar nicht geschrieben.

Aufrufen kannst du die Funktion - wenn sie richtig deklariert ist - einfach so:

ausles( datei_best );

Eckige Klammern oder Adressoperatoren haben da nichts zu suchen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...