String einzeln zuweisen



  • Hallo Leute,

    Ich habe hier ein echtes Anfängerproblem, bei dem ich nicht weiterkomme. Ich habe schon allerlei Lösungen gefunden, wie ich z.B. int in einen String kriege, aber mein Problem ist anders.

    Also ich will einzelne ints (<=255) in ein Array von chars hauen.

    char buffer[256]; //Die Länge brauche ich später noch.
    
    buffer = (6, 0xFF, 0x80, 0x01);
    

    Der Compiler meldet eine Warnung

    warning: assignment makes pointer from integer without a cast

    Beim Ausführen kriege ich dann die Meldung

    Segmentation fault

    Es muss doch möglich sein, diese Zuweisung zu machen, ohne eine hässliche Schleife oder 4 Zeilen untereinander.

    Stell ich mich einfach blöde an oder geht das nicht?

    Warum ist denn das mit den Strings so schwierig in C? Jede andere Programmiersprache kann mit Strings arbeiten, nur C nicht. 😞

    Günther



  • Hallo,

    du kannst Werte bei der Initalisierung des Arrays mitgeben.

    char buffer[256] = {6, 0xFF, 0x80, 0x01};
    

    Ansonsten bleibt dir wirklich nur die Schleife, oder eben memset, aber das ist hier evtl. ungeeignet.

    Stell ich mich einfach blöde an oder geht das nicht?

    Letzteres.

    Warum ist denn das mit den Strings so schwierig in C?

    Da wurde eben nicht so viel Wert drauf gelegt, als man die Sprache entwarf. Und in den frühen 70ern war das, was C bot, wohl schon fast Luxus.

    Jede andere Programmiersprache kann mit Strings arbeiten, nur C nicht.

    Es ist in C nur mit mehr Aufwand verbunden, als z.B. in Java oder so.

    MfG

    GPC



  • Vielleicht sollte man einmal bedenken, für was C eigentlich Anfang der 70er erfunden, geschrieben usw.
    wurde. Nämlich um ein Betriebssystem zu programmieren. Auf dieser Ebene gibt es nun mal keine Strings.
    Warum sich das bis heute nicht geändert hat? Es werden halt immer noch Betriebssysteme damit programmiert ;).

    C ist eben auch nicht perfekt, sonst wären ja all die anderen Programmiersprachen nicht entstanden 🙂


Anmelden zum Antworten