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.