Problem mit Char-Array



  • Ich habe mich jetzt länger nicht mit C befasst und schreibe nachher ein Testat.

    Ich probiere grade rum, ob ich auch nichts vergessen habe und an einer Kleinigkeit scheitert es. Ich will einem Char Array eine Zeichenkette zuweisen:

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	char x[5]="1234"; <-- funktioniert
    	char y[5]="12345"; <--Fehler 1
    	scanf("%s",&x); <-- funktioniert
    	x="test"; <-- Fehler 2
    	return 0;
    }
    

    Fehler 1: error C2117: 'y': Überlauf der Arraygrenzen

    Wieso kann ich einem Array mit der Größe 5 nur eine Zeichenkette mit 4 Stellen zuordnen? 😕

    Fehler 2: error C2440: '=': 'const char [5]' kann nicht in 'char [5]' konvertiert werden

    Wo liegt mein Fehler?



  • GR-Thunderstorm schrieb:

    Wieso kann ich einem Array mit der Größe 5 nur eine Zeichenkette mit 4 Stellen zuordnen? 😕

    weil die abschliessende 0 noch mit rein muss.

    GR-Thunderstorm schrieb:

    Fehler 2: error C2440: '=': 'const char [5]' kann nicht in 'char [5]' konvertiert werden

    arrays lassen sich mit = nur einmal initialisieren. danach musste strcpy, memcpy oder sowas verwenden.
    🙂



  • Fehler1: Dein array ist zu klein für den string den du damit initalisieren willst.

    Fehler2: Du kannst nich direkt einen string zuweisen (nur wenn variable initialisiert wird) , schau dir mal "strcpy" an!



  • Ok, danke, strcpy klappt. 🙂



  • fricky schrieb:

    arrays lassen sich mit = nur einmal initialisieren. danach musste strcpy, memcpy oder sowas verwenden.

    Und ganz pedantisch: alles läßt sich nur einmal initialisieren.
    Es ist halt so, daß eine Initialisierung wie eine Zuweisung aussieht.
    Früher war's anders: da machte man statt dem Gleichheitszeichen Klammern,
    aber das gab dann Probleme mit der Interpretation von Funktionsdeklarationen.



  • bgdnoy schrieb:

    Früher war's anders: da machte man statt dem Gleichheitszeichen Klammern,

    wann früher? aber doch nicht in C. oder doch?
    🙂



  • wann früher? aber doch nicht in C. oder doch?

    O doch, in C! Hab ich im ganz alten K&R gelesen.
    EDIT:
    Dort steht aber auch nur: "in früheren Versionen", vielleicht meinen sie einen der Vorläufer.


Anmelden zum Antworten