char nach char Konvertieren
-
Hiermit kann ich nicht so recht was anfangen ...
char* text = new char[strlen("abc")]; strcpy(text, "abc"); // Irgendwas damit machen delete char; // oder: char text[3] = { 'a', 'b', 'c' };Ich hab jetzt so gelöst:
#include <iostream> #include <fstream> using namespace std; int main() { char text[20] = {'a','b','c'}; char speicher[20]; for (int i=0;i<4;i++) { speicher[i] = text[i]; } for (int j=0; j<4;j++) { cout<<speicher[j]; } system("PAUSE"); }Aber trotzdem würde mich interessiere was hier so passiert:
char* text = new char[strlen("abc")];
strcpy(text, "abc");
delete char;Kennt wer eine Seite wo man das nachlesen kann?
Hab kp wo nach ich da jetzt googeln sollte.
-
Also dein Code ist eher suboptimal und geht mehr in Richtung C. Das koennte dir helfen, wenn du alles durchliest: http://www.cs.cf.ac.uk/Dave/C/
-
// hier wird Speicher für char angefordert und zwar in der Länge von "abc". char* text = new char[strlen("abc")]; // Hier wird "abc" in diesen Speicher kopiert strcpy(text, "abc"); // Hier wird der Speicher an das OS zurückgegeben delete [] text;rya.
-
#include <iostream> #include <fstream> // Wozu inkludierst du fstream? using namespace std; int main() { char text[20] = {'a','b','c'}; // '\0' vergessen anzugeben char speicher[20]; // falsch eingerückt *hust* // außerdem viel zu kompliziert. // wenn du C++ programmieren willst bitte auch STL inkl. std::string nutzen (siehe unten) for (int i=0;i<4;i++) { speicher[i] = text[i]; } for (int j=0; j<4;j++) { cout<<speicher[j]; } system("PAUSE"); // auch böse, benutz besser cin }Ich hätte es wahrscheinlich so gelöst:
#include <iostream> int main() { std::string text = "buuh"; std::string speicher; speicher = text; std::cout << speicher; std::cin.ignore(); return 0; }
-
Scorcher24 schrieb:
// hier wird Speicher für char angefordert und zwar in der Länge von "abc". char* text = new char[strlen("abc")]; // Hier wird "abc" in diesen Speicher kopiert strcpy(text, "abc"); // Hier wird der Speicher an das OS zurückgegeben delete [] text;rya.
oO. -> man strcpy:
The strcpy() function copies the string pointed to by src, including the terminating null byte ('\0')Du reservierst Platz fuer 3 chars und kopierst 4. Nein! Eine bessere alternative ist strncpy.
-
knivil schrieb:
oO. -> man strcpy:
The strcpy() function copies the string pointed to by src, including the terminating null byte ('\0')Du reservierst Platz fuer 3 chars und kopierst 4. Nein! Eine bessere alternative ist strncpy.
Kopiert strcpy nicht solange bis es ein '\0' entdeckt? Das wären noch ein paar Bytes mehr. Siehe dieses Beispiel:
#include <iostream> int main() { char text1[5] = {'h', 'a', 'l', 'l', 'o'}; char* padding = "buuh"; char* addition = new char[20]; strcpy(addition, text1); std::cout << addition; delete [] addition; std::cin.ignore(); return 0; }
-
ahhh zu früh gefreut

Was ich nun genau machen will:
#include <iostream> using namespace std; int main(int argc, char* argv[]) { char text = 65; char speicher; speicher = text; cout << hex <<speicher; return 0; }Das funktioniert einwandfrei.
Was aber wenn ich anstatt char text = 'abc'; habe ?
Das muss doch auch irgendwie gehen oder nicht ?
-
knivil schrieb:
Du reservierst Platz fuer 3 chars und kopierst 4. Nein! Eine bessere alternative ist strncpy.
Flüchtigkeitsfehler, aber natürlich richtig :).
rya.
-
So jetzt aber

#include <iostream> using namespace std; int main(int argc, char* argv[]) { char *text = "abc"; char *speicher; speicher = text; cout << hex <<speicher; return 0; }
-
@Char: Schau dir bitte nochmal die Grundlagen an bzw. fang an dir die Grundlagen anzuschauen. Kauf dir ein Buch oder lese dir ein Anfängertutorial durch. Eine mögliche Alternative zu deinem Code habe ich bereits in diesem Thread gepostet.
-
Jetzt geht das mit dem dummen hex ding nich

Ich hab schon ein Tutorial durchgearbeitet aber mit der Zeit Vergess ich immer son paar Sachen

-
char schrieb:
Jetzt geht das mit dem dummen hex ding nich

Das nennt sich Manipulator. Begrifflichkeiten sind auch wichtig beim Programmieren.
char schrieb:
Ich hab schon ein Tutorial durchgearbeitet aber mit der Zeit Vergess ich immer son paar Sachen

Was soll ich sagen...? Üben, üben, üben!
Erst die praktische Anwendung lässt einen die vielen Dinge im Gedächtnis halten. Ein Riesen-Tutorial komplett durchzulesen, ohne zwischendurch immer wieder Sachen selbst auszuprobieren, bringt leider wenig. Da vergisst man wirklich die Hälfte...