Hallo phoolan,
bis ich geantwortet habe, hat sheel deine eigentliche Frage vermutlich schon beantwortet.
Ich möchte dir aber gerne noch einmal die Grundlagen von
C-Arrays und
C-Strings erläutern, vielleicht wird dir dann klarer, was genau du falsch gemacht hast.
Wenn du schreibst
C++:
char test[8] = {T,e,s,t,c,o,p,y};
muss dir der Compiler einen Fehler ausspucken. Grund dafür ist, dass du durch
C++:
char beliebigerName[8] = IRGENDWAS;
dem Compiler mitteilst, dass du gerne ein
Array, also eine
Liste aus 8 Objekten vom Typ
char anlegen möchtest. Zum Glück kann man heutzutage eine solche Initialisierungsliste (die geschweiften Klammern) wie du sie verwendet hast benutzen, um solche Listen/Arrays zu Füllen. Allerdings musst du dann einerseits darauf achten, dass die Liste die korrekte Länge besitzt (in deinem Fall 8 Elemente), und andererseits müssen die Objekte die du in die Liste schreibst natürlich vom dem Typ sein, den du vorne beim Array angegeben hast (bzw. sie müssen implizit zu diesem Typ konvertierbar sein).
Der Compiler versteht allerdings nicht, was
T,
e,
s,
t,
c,
o,
p, und
y sein sollen (und definitiv nicht, dass es
char sein sollen). Ein
char (engl. für character = Zeichen) wird in C und C++ in einfache Anführungszeichen gestellt. Wenn du z.B. schreibst
spuckt dir der Compiler einen Fehler aus. Schreibst du jedoch
versteht der Compiler, dass
einZeichen das Zeichen
a sein soll. Du müsstest also wie sheel geschrieben hat dein Array so initialisieren:
C++:
char test[8] = {'T','e','s','t','c','o','p','y'};
Damit sagst du deinem Compiler, er soll eine
Liste der Zeichen
T e s t c o p y anlegen. Übrigens wird
test dabei zu einem
(char-)Zeiger, der auf das erste Zeichen der Liste zeigt. Zum Thema Zeiger musst du dich bitte selbst schlau machen.
Ich vermute jetzt, dass du eigentlich gar nicht direkt Arrays brauchst, sondern
Strings, genauer
C-Strings. Die klassischen C-Strings sind im Prinzip ein
char-Array. Aber jetzt stell dir doch mal schnell folgende Frage: Wenn du eine Funktion wie z.B.
printf() oder
scanf() schreiben müsstest, woher wüsstest du dann wann du fertig bist? Gäbe es die Möglichkeit, die Länge eines C-Arrays zu ermitteln, dann wäre die Antwort ganz einfach. Allerdings besteht ein C-Array
nur aus diesem einen Zeiger. Es gibt keinerlei Information darüber, wie viele Elemente das C-Array enthält (C-Arrays werden daher auch Raw-Arrays, also rohe Arrays genannt. De facto bestehen sie nur einem "rohen Zeiger"). Die Lösung ist daher, ein Zeichen zu definieren welches für das Ende eines Strings steht, das sogenannte
Nullbyte '\0' (der Backslash ist das Präfix für Byte-Notation). Und jetzt kommt genau das, was sheel gesagt hat: Möchtest du einen String
Testcopy haben, musst du ihn
nullterminieren:
C++:
char test[9] = {'T','e','s','t','c','o','p','y','\0'}; // Array besteht jetzt aus 9 Zeichen!
Jetzt ist
test ein C-String und du kannst ihn bedenklos mit printf() ausgeben, in Dateien schreiben, und vieles mehr.
Anstatt jedes Mal diese komplizierte Geschichte hinzuschreiben, gibt es für die Initialisierung von C-Strings auch eine einfache Schreibweise, man setzt den String in doppelte Anführungszeichen:
C++:
char test[9] = "Testcopy";
Der String wird dabei automatisch nullterminiert. Wenn du
test so definierst, besteht es aus den Zeichen 'T','e','s','t','c','o','p','y','\0' , also genau das, was wir wollten.
Dein eigentliches Problem ist also, dass du einen C-String in einen anderen C-String einfügen möchtest. Hierfür gibt es im Internet zahlreiche Hilfestellungen, du kannst ja mal googeln.
Du kannst natürlich auch noch einmal nachfragen, dann gebe ich dir gerne Hinweise und Tipps.
Gruß Technipion