Array variabler Länge



  • Hallo,

    ich möchte gerne ein Array haben, dass abhängig von einer im Programm berechneten Variablen eine unterschiedliche Länge haben soll. Der folgende Codeausschnitt funktioniert in C zwar nicht, aber macht vielleicht eher klar, was ich versuche umzusetzen:

    float SCount;
    signed char Array[];
    ...
    ...
    Berechnung SCount
    ...
    ...
    if (SCount<8)
    Array[]={1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1};
    else if (SCount>=8 && SCount<9)
    Array[]={1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1};
    else
    Array[]={1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
    

    In meinem C-Buch (Kelley - "A book on C") finde ich dazu nichts, und im Internet stoße ich nur auf Hinweise, wie man so etwas in Perl, Java oder Delphi umsetzt. Aber wie macht man so etwas in C?

    Danke für jeden Tipp!



  • signed char *Array;
    
    Array= (signed char*)malloc( anzahlDerElemente * sizeof(signed char) );
    
    Array[0]= ...;
    Array[1]= ...;
    
    free(Array);
    


  • Vielen Dank, dass werde ich morgen gleich mal ausprobieren (habe das Programm leider hier nicht auf dem PC)


  • Mod

    signed char foo[]={1,1,1,1,1,1,1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
    signed char* Array=foo+(SCount<9?SCount<8?2:1:0);
    


  • hellihjb schrieb:

    signed char *Array;
    
    Array= (signed char*)malloc( anzahlDerElemente * sizeof(signed char) );
    
    Array[0]= ...;
    Array[1]= ...;
    
    free(Array);
    

    Thou shalt not cast malloc 😉 am besten ist es

    Array = malloc(anzahlDerElemente * sizeof(*Array));
    
    /* nicht vergessen */
    if(Arrays == NULL) FEHLER
    

Anmelden zum Antworten