Veröffentlicht 11. Februar 200817 j 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
11. Februar 200817 j 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])
11. Februar 200817 j 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
11. Februar 200817 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.