aus char array verketteten zeiger erstellen

Dieses Thema im Forum "C/C++" wurde erstellt von codefritz, 03.06.2008.

  1. #1 codefritz, 03.06.2008
    codefritz

    codefritz Grünschnabel

    Dabei seit:
    02.06.2008
    Beiträge:
    3
    Zustimmungen:
    0
    gegeben:
    char **array;
    char *string;

    array ist initialisiert, mit Speicher allokiert und enthaelt verschieden lange Strings.

    Nun moechte ich alle strings aus array dem Zeigr string zuweisen als eine zusammenhaengende Zeichenkette (mit evlt einem Leerzeichen alls Trennzeichen zwschen den einzelnen Strings).
    In array werden die einzelnen String ja nacheinander im Speicher abgelegt.
    Das heisst es muss auch kein neur Speicher alloziert werden fuer string, moechte ihn nur ausrichten. Und nicht strcpy oder aehnliches verwenden.

    Danke
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Gast1

    Gast1 Guest

    Ich hoffe ich habe die Frage richtig verstanden...
    Ja, du brauchst keinen neuen Speicher zu reservieren.

    bsp.:
    Code:
    for(int i=0; i<MAX; i++)
    {
     string = array[i];
     printf("%s ",string);
    }
    Wenn du allerdings eine Kopie eines strings "in" string speichern möchtest, musst du speicher reservieren:
    Code:
    for(int i=0; i<MAX; i++)
    {
     string = (char*)malloc(strlen(array[i]) + 1); //+1 für das leerzeichen
     strcpy(string, array[i]);
     strcat(string, " ");
     free(string);
    }
    willst du alle strings zusammen "in" string Kopieren, musst du für string natürlich soviel speicher wie für array reservieren, plus den ganzen leerzeichen dazwischen
     
  4. #3 codefritz, 03.06.2008
    codefritz

    codefritz Grünschnabel

    Dabei seit:
    02.06.2008
    Beiträge:
    3
    Zustimmungen:
    0
    hm ok,dachte eig so.

    Code:
    char **array;
    //bereits vorinitalisiert, Bsp:
    char **array = {"string1", "string2", "string3"};
    
    char *stringkette=NULL;
    //dieser zeiger ist nicht vorinitialisiert und zeigt noch ins Nirgendwo
    //nun soll dieser so ausgerichtet werden, dass er auf die strings aus array als eine //zusmmenhaenge zeichenkette zeigt.
    //also irgedwie so
    for(i=0; i<3; i++){
    stringkette = array[i];
    stringkette = stringkette + strlen(array[i]) * sizeof(char)			
    }
    //anschliessend sollte bei einem
    printf("%s", stringkette");
    // das rauskommen als ein zusmmenhaengender string:  string1 string2 string3
    // ein noch beliebiges Trennzeichen waer schoen, zB. ;
    
    Hoffe das war verstaendlich.
    
    thx
     
  5. Gast1

    Gast1 Guest

    Jo, wie gesagt, gesammtlänge aller strings in array ermitteln.
    Entsprechend viel speicher reservieren,
    und die Dinger der reihe nach in stringkette kopieren...

    Du kannst mit stringkette nur auf einen String zeigen, und beim '\0' ist dann ende.

    Man könnte das '\0' durch ein leerzeichen ersetzten, aber sowas schon der Gedanke ist nicht zu empfehlen :)
     
  6. #5 Mµ*e^13.5_?¿, 03.06.2008
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    In dem Array werden Pointer nacheinander abgelegt.
    Die eigentlichen Strings können dabei vollkommen beliebig im Speicher verteilt sein.

    Ich denke, ohne zu kopieren, wird das nicht so allgemein gültig funktionieren.
     
Thema:

aus char array verketteten zeiger erstellen

Die Seite wird geladen...

aus char array verketteten zeiger erstellen - Ähnliche Themen

  1. C char array zurückgeben

    C char array zurückgeben: Hallo zusammen eine wohl recht simple frage leider scheint irgend ein verständnisproblem bei mir zu herrschen char * bla(){ char...
  2. Richard Stallman erhält ACM-Preis für Softwaresysteme

    Richard Stallman erhält ACM-Preis für Softwaresysteme: Die Association for Computing Machinery hat GNU-Gründer Richard Stallman den Preis für Softwaresysteme 2015 zuerkannt. Stallman erhält den...
  3. Richard Stallman gibt Emacs-Projektleitung ab

    Richard Stallman gibt Emacs-Projektleitung ab: Wie der Richard Stallman in einer E-Mail an die Liste des Projektes bekannt gab, gibt er Leitung des Projektes ab. Der neue Maintainer wird mit...
  4. Richard Stallman in Frankfurt

    Richard Stallman in Frankfurt: Richard Stallman, der Gründer von GNU und der Free Software Foundation, wird Anfang des kommenden Monats zwei Vorträge in Frankfurt am Main...
  5. Vor 30 Jahren veröffentlichte Richard Stallman das GNU-Manifest

    Vor 30 Jahren veröffentlichte Richard Stallman das GNU-Manifest: Das GNU-Manifest legte 1985 die Ziele einer Bewegung fest, die sich der Kommerzialisierung von Unix widersetzte und ein freies Betriebssystem...