Return-wert Matrix? Geht sowas?



  • Hallo!

    Ich hänge seit ein paar Tagen an nem Problem:

    Ich möchte eine Funktion erstellen, die mir Daten aus einer Datei einließt und in ein mehrdimensionales array schreibt, das klapp soweit auch, ich kann dann die einzelnen Zeichen über matrix[x][y] ausgeben - genau wie ich es brauche.

    Aber WIIIIEEEEE krieg ich dieses array ("matrix") jetzt zurück in die Hauptfunktion?

    Hab schon viel Probiert, return matrix, return *matrix etc. aber
    irgendwie klappts alles nicht.

    Jemand ne Idee? 😕 😕 😕



  • Kannst du evtl. mal das Beispiel posten, soweit wie du es bis jetzt hast?



  • Okay, ich hab mir das ungefähr so vorgestellt:

    int get_data ()
    {
    	FILE *stream;
    	int x=0,y=0, q=0;
    	char bla[11][20];
    	char c = '1';
    
       stream = fopen( "data.dat", "r" );
    
       if( stream == NULL )
          printf( "The file was not opened\n" );
       else
       {
    	  /* Set pointer to beginning of file: */
          fseek( stream, 0L, SEEK_SET );
    
          /* Read data from file: */
    	  while (!feof(stream))
    	  {
    	  c = fscanf( stream, "%c", &bla[y][x]);
    
    	  // Am Zeilenende x=0 und y++
    	  if (bla[y][x] == '\n')
    	  {
    		  printf("\n");
    		  x=0;
    		  y++;
    
    	  }
    
    	  // Zeile Zeichenweise einlesen
    	  else
    	  {
    		printf("%c", bla[y][x]);
    		x++;
    	  }
    
    	  }
    	  }
    
       // Datei schließen
    	fclose( stream );
    
    	x=0;
    	y=0;
    
    	// Array ausgeben (nur zum Testen)
          for(y=0; y<=9; y++)
    		{
    			printf("Zeile %d: ", y);
    			for(x=0; x<=19; x++)
    			{
    				printf("%c", bla[y][x]);
    			}
    			printf("\n");
    		}
          // Array an main zurückgeben - aber wie?
    	return {whatever}???;
    }
    

    Kannst mir folgen?



  • sollte bla[11][20];
    deine matrix sein darfst du den speicher nicht lokal in deiner funktion auf dem stack anlegen.. also entweder allokierst du den speicher dazu in deiner funktion (das ist die schlechte variante) oder du übergibst deiner funktion eine pointer auf bereits von dir zu verfügung gestellten speicher damit dann in diesen geschrieben werden kann...


Anmelden zum Antworten