char[x] definieren, wobei x = int variable, möglich?



  • ich möchte ein *char definieren, das die länge hat, mit dem wert aus einer int variable. is vielleicht unverständlich, deshalb mal mein versuch:

    int cols;

    cols=(irgendeine funktion, die die spalten einer matrix zählt);

    char seq[cols]; (soll also einen string definieren, der die länge cols hat)

    in dieses seq werden danach buchstaben geschrieben. das funktioniert auch noch und kompilieren funktioniert auch, aber beim testen bekomme ich wenn ich seq ausgebe, die buchstaben, die ich wollte und dananch eine folge von seltsamen zeichen, die ich mit der tastatur nichtmal nachmachen kann 😞

    was is da falsch, oder geht das überhaupt nciht, so wie ich es versucht habe?



  • so gehts nicht, du musst das array dynamisch ,also während der laufzeit anlegen:
    int length=0;
    char array=0;
    length=berechne(); //...deine Funktion
    array=malloc(length
    sizeof(char));
    if(array==0)//fehler!!!
    {/*fehlerbehandlung...*/}
    else
    {/*passt alles!*/}



  • ...wenn der compiler meckert wegen array=malloc(length*sizeof(char)); dann mussts halt noch auf (char*) umwandeln, also array=(char*)malloc(length*sizeof(char));



  • und noch was... schrieb:

    ...wenn der compiler meckert wegen array=malloc(length*sizeof(char)); dann mussts halt noch auf (char*) umwandeln, also array=(char*)malloc(length*sizeof(char));

    ANSI C nicht, nein.



  • und noch was... schrieb:

    ...wenn der compiler meckert wegen array=malloc(length*sizeof(char)); dann mussts halt noch auf (char*) umwandeln, also array=(char*)malloc(length*sizeof(char));

    Super Tipp. Wie wäre es mit "...dann verwende einen C-Compiler"?

    musst dynamisch machen... schrieb:

    so gehts nicht, du musst das array dynamisch ,also während der laufzeit anlegen:

    Stimmt übrigens auch nicht uneingeschränkt, in C99 geht das sehr wohl.



  • LordJaxom schrieb:

    Stimmt übrigens auch nicht uneingeschränkt, in C99 geht das sehr wohl.

    Hmpf! Hoffentlich unterstützt das VS irgendwann endlich mal C99! Vermutlich geht das dann im VS 2019...



  • _matze schrieb:

    Hmpf! Hoffentlich unterstützt das VS irgendwann endlich mal C99! Vermutlich geht das dann im VS 2019...

    Meines Wissens macht Microsoft garkeine Anstrengungen mehr in Richtung C. Deshalb (und weil eben durch die Verbreitung von VS der Standard C99 selbst noch kaum Verbreitung erfahren hat) auch der Zusatz "nicht uneingeschränkt". Sprich, es ist ein Feature, welches de facto unbenutzbar ist :).



  • Tja, keine schönen Aussichten. Wenn ich daran denke, dass wir hier viele C-Projekte haben, andererseits aber sicher nie vom VS wegkommen, dreht sich mir der Magen um... 😉



  • LordJaxom schrieb:

    Meines Wissens macht Microsoft garkeine Anstrengungen mehr in Richtung C. Deshalb (und weil eben durch die Verbreitung von VS der Standard C99 selbst noch kaum Verbreitung erfahren hat) auch der Zusatz "nicht uneingeschränkt". Sprich, es ist ein Feature, welches de facto unbenutzbar ist

    ja, unter windoofs ist C so gut wie tot. wird fast nur noch für treiber benutzt. unter linux und für microcontroller-programmierung ist C aber voll im rennen. und da hat auch C99 schon länger seinen festen platz. ich kenne jedenfalls keinen grossen hersteller von µC-tools, der noch reine C89-compiler im programm hat.
    🙂

    _matze schrieb:

    Tja, keine schönen Aussichten. Wenn ich daran denke, dass wir hier viele C-Projekte haben, andererseits aber sicher nie vom VS wegkommen, dreht sich mir der Magen um.

    wen es nach m$ geht, dann solltet ihr c++ verwenden. das, befürchte ich, wird deinen magen erst richtig karussell fahren lassen.
    🙂



  • vielen dank für eure beiträge, werd es so wie "musst dynamisch machen" versuchen.

    ich schreib übrigens tatsächlich in linux, auch wenn ich sonst von eurer unterhaltung nicht viel verstanden habe 😃


Log in to reply