chrissiw Geschrieben 11. Februar 2008 Geschrieben 11. Februar 2008 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 Zitieren
Zakum Geschrieben 11. Februar 2008 Geschrieben 11. Februar 2008 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]) Zitieren
chrissiw Geschrieben 11. Februar 2008 Autor Geschrieben 11. Februar 2008 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 Zitieren
Klotzkopp Geschrieben 11. Februar 2008 Geschrieben 11. Februar 2008 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. Zitieren
Empfohlene Beiträge
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.