2dimensionales string-array,

holly123

Grünschnabel
hi leute,

ich bin fast am verzweifeln.

ich möchte ein 2-dimenstionales array aus strings aufbauen, diesen in einer funktion füllen und dann an eine zweite funktion übergeben.... nur irgendwie schaff ich das nicht. das suchen hat mir auch nicht viel gebraucht, weil da nur mit eindimensionalen array hantiert wird....

ich habe es schon mit mehreren möglichkeiten versucht, bekomme es aber nicht hin....

Code:
char * sArray[3][2] = {""};   

void fillArray() {

  int i;

  for (i=0; i<sizeof(sArray); i++) {
    strcpy(sArray[i][0], "Name");
    strcpy(sArray[i][1], "Wert");
  }

}

void showArray() {

  int i;

  for (i=0; i<sizeof(sArray); i++) {
    printf("%i 0: %s", i, sArray[i][0]);
    printf("%i 1: %s", i, sArray[i][1]);
  }

}

int main() {

   fillArray();
   showArray();

   return 0;

}

Rauskommen sollte:

Code:
0 0: Name
0 1: Wert
1 0: Name
1 1: Wert
2 0: Name
2 1: Wert
ich wäre sehr dankbar wenn mir jemand helfen kann!

lg
holly123
 
So, hoffe es hilft dir:

Code:
#include <cstdlib>
#include <iostream>

using namespace std;


string Array[9][2];
   

void fillArray() {
for(int x  = 0; x <9; x++)
{
        for(int y = 0; y <2; y++)
        {
                if( y==0){Array[x][y] = "Wert";}
                if( y==1){Array[x][y] = "Name";}   
        }
}
}

void showArray() {
for(int z  = 0; z <9; z++)
{
        for(int w = 0; w <2; w++)
        {
               cout << z << " " << w << ": " << Array[z][w] << "\n";
        }
}
}

int main() {

   fillArray();
   showArray();
   cin.get();

   return 0;

}
 
hi, ich bin mir nicht ganz sicher, aber so wie ich das sehe, holst du dir einen Zeiger auf ein 2 Dimensionales Array, das ist für deinen Ansatz auch richtig, du übersiehst dabei aber, dass du nur einen Zeiger hast und keinen Speicherplatz, entweder du erzeugst ein 3D Array, oder du holst dir den Speicher mit malloc, das ist der übliche C weg.

EDIT: zu langsam
 
hi Ryu1991,

kannst du mir bitte auf die Sprünge helfen, ich steh irgendwie auf der Leitung.

Meinst du so was:

Code:
char * sArray[3][2] = {""};   

 sArray[0] = malloc(sizeof ("Name"));
 if (sArray[0] != NULL)  {
   strcpy (sArray[0], "Name"); 
 }
 
Schon nah dran, du musst den Speicherplatz für jede Zeichenkette berreitstellen:
Code:
void fillArray() 
{
  int i;
  for (i=0; i<sizeof(sArray); i++) 
  {
    sArray[i][0] = malloc(sizeof("Name"));
     strcpy(sArray[i][0], "Name");

    sArray[i][1] = malloc(sizeof("Wert"));
     strcpy(sArray[i][1], "Wert");
  }
}

In C++ würde man übrigens von malloc abstand nehmen und anstatt dessen:
Code:
sArray[i][0] = new char[sizeof("Name")];
schreiben.

In C sollte man den Speicherplatz zum schluss nocheinmal mit "free(sArray[i][0])" und in C++ mit "delete[] sArray[i][0]" wieder freigeben.

mfg
SGSSGene
 
Zuletzt bearbeitet:
Zurück