[C/C++] Arrays verschmelzen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von tenix, 14. Oktober 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 14. Oktober 2009
    Arrays verschmelzen

    Hallo,

    ich habe folgende Arrays:

    array[0]=Maus
    array[1]=Blau
    array[2]=Plastik

    array[3]=Katze
    array[4]=Rot
    array[5]=Glas

    array[6]=Pferd
    array[7]=Gruen
    array[8]=Keramik

    Ich möchte alle Arrays zu einem gemeinsamen String zusammenschmelzen:
    char* merged_arrays="Maus, Blau, Plastik, Katze, Rot, Glas, Pferd, Gruen, Keramik";

    Meine C function sieht so aus:

    char* string=merged_arrays;
    function (string)
    {
    char *b[] = { string };
    ....
    }

    Wie geht das?
    Danke
     
  2. 14. Oktober 2009
    AW: Arrays verschmelzen

    Das geht nur, wenn du den string dynamisch allokierst.
    Ungetesteter Code:
    Code:
    int total_size = 0;
    int i = 0;
    for (i = 0; i < 9; ++i)
    {
     total_size += strlen(array[i]);
    }
    total_size += 8*2 + 1 // für die kommas, das leerzeichen und das 0-byte am ende
    
    char *new_array = malloc(sizeof(char)*total_size);
    for (i = 0; i < 9; i++)
    {
     strcat(new_array, array[i];
     if (i != 8) strcat(new_array, ", ");
    }
    
    // tu was damit
    free(new_array);
    wie gesagt, nur schnell hingeschrieben und ungetestet
     
  3. 14. Oktober 2009
    AW: Arrays verschmelzen

    Falls C++:
    Code:
    #include <string>
    using namespace std;
    
    ...
    
    char *bla[9] = ...;
    string new_string;
    
    for (int i = 0; i < 8; ++i) {
     new_string.append(bla[i]);
     new_string.append(",");
    }
    
    new_string.append(bla[8]);
    
    
     
  4. 14. Oktober 2009
    AW: Arrays verschmelzen

    pyro, es funktioniert. allerdings habe ich die quote zeichen vergessen, kannst du mir bitte den code anpassen bitte. Vielen Dank!
    char* merged_arrays='"Maus", "Blau", "Plastik", "Katze", "Rot", "Glas", "Pferd", "Gruen", "Keramik"';

    razor90, Vielen Dank für deine Hilfe!
     
  5. 14. Oktober 2009
    AW: Arrays verschmelzen

    Du willst also, dass um jedes Wort noch "" gesetzt werden?

    Das hättest du doch wirklich selbst anpassen können:
    Code:
    int total_size = 0;
    int i = 0;
    for (i = 0; i < 9; ++i)
    {
     total_size += strlen(array[i]);
    }
    total_size += 8*2 + 1 + 8*2 // für die kommas, das leerzeichen und das 0-byte am ende, und für die anführungszeichen
    
    char *new_array = malloc(sizeof(char)*total_size);
    for (i = 0; i < 9; i++)
    {
     strcat(new_array, "\"");
     strcat(new_array, array[i];
     strcat(new_array, "\"");
     if (i != 8) strcat(new_array, ", ");
    }
    
    // tu was damit
    free(new_array);
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.