Stringarray geht nicht! :(

Azero

Mitglied
hallo..

ich will mir ein array aus string zusammen bauen. Ich find den Fehler einfach nicht, denn bei der ausgabe kommt immer nur der erste string. danach dann nciht mehr! Und hier der code:
Code:
typedef char **strArr;

strArr mallStrArr(int SizeOfOneString, int StringCount){
  char **t=malloc(StringCount*sizeof(char*));
  int i;
  for(i=0;i<StringCount;i++)
   	t[i]=(char*)malloc(SizeOfOneString);

  result[0]="eins";
  result[1]="zwei";

  return t;
}


void main(){
  strArr s=mallStrArr(4,2);  
  printf("\nErgebnis: %s \n",s[0]);
  printf("Ergebnis: %s \n",s[1]);
  }
}

Als Erbebnis bekomme ich folgendes:

Ergebnis: eins
Ergebnis:


Die Frage ist nun, warum steht nicht da?:

Ergebnis: eins
Ergebnis: zwei


Kann mir jemand sagen, wo ich einen Fehler gemacht habe?

Vielen dank
Azero
 
Also....

1. lege immer ein Byte mehr an als der String lang ist, wegen der Hex 0, die
das Stringende markiert (Klartext: mallStrArr(5,2); )

2. kopiere dir den String mit strcpy in dein Array, nicht mit = ".."

3. Wo ist Result deklariert ? Oder denkst du, das ist wie in Pascal ? Oder
hast du dich nur verschrieben ?

Ich habs nicht ausprobiert, das ist nur was mit aufgefallen ist...

Greets BadMourning
 
Hallo...

Danke für deine Antwort. Leider läuft es noch nicht. Zum ersten Punkt. mallStrArr(4,2) reserviert 4 byte (0-3) in dem 4 steht dann die 0.

Wenn ich den String mit strcpy kopiere, geht es gleich gar nicht. (ich checks auch nich)

Zu 3. ja das war ein schreibfehler! ;)

Bin für weitere Hinweise offen... Danke

Gruß Azero
 
Hallo,
probier mal:

Code:
typedef char **strArr;

strArr mallStrArr(int SizeOfOneString, int StringCount){
  char **t = NULL;
  int i;
 
  t = (char **)malloc(StringCount*sizeof(char*));
  for(i=0;i<StringCount;i++)
	t[i] = (char*) malloc((SizeOfOneString+1) * sizeof(char));

  strcpy(t[0],"eins");
  strcpy(t[1],"zwei");

  return t;
}

Aber #include <string.h> nicht vergessen :) .

Bei mir hats dann funktioniert
 
Zurück