char* mit char* verknüpfen
-
Wenn du Zeichenketten so erstellst:
char* str1 = "Und es wird gleich was zugewiesen";
dann ist str1 als nicht beschreibbar anzusehen.
Das gibt der Standard so vor.Außerdem: Wenn du nun sagen wir mal ein Array mit chars erstellst (und ein c-string ist ja nix andres).
char EinArray[6] = "Hallo";
dann hast du 5 buchstaben und eine finale 0.
Du darfst da nicht einfach was dranhängen, denn soviel Speicher wurde nunmal nicht dafür bereitgestellt.Die Geschichte mit dem itoa ist genau das selbe.
-
aha, danke. Und wie löse ich mein problem, wenn ich "Figure" mit str1 verbinden will? strcat geht da nicht, das ist klar. aber wie?
(also const char[] und char*)
-
chris90 schrieb:
aha, danke. Und wie löse ich mein problem, wenn ich "Figure" mit str1 verbinden will? strcat geht da nicht, das ist klar. aber wie?
(also const char[] und char*)So z.B.
char first[256]="hallo"; //Nu ist genug speicher da
char* x=strcat(first,ItS(5));
-
führt bei mir zu nem programm-absturz.
-
Warum hörst du nicht auf die Ratschläge un beharrst darauf es auf deine Weise zu tun. Du hast die keinerlei Speicherberich reserviert in dem du zwei Strings concatenieren kannst. Leg dir eine Buffer an z.B.
Dann klapts auch mit dem strcat.char* first="hallo"; char* ItS (int x){char* y=new char;itoa(x,y,10);return y;} char Buffer[50000]; strcpy(Buffer,first); strcat(Buffer,Its);
Gutes Design zeichnet sich durch Lesbarkeit aus.
Wenn man richig gut ist, kann man versuchen am Obsfuscated C-Contest teilzunehmen ( Die Latte da liegt aber sehr hoch, z.B. mögen sie keine Vermischungen von C und C++), dies ist der einzige Grund für kryptisches Design
-
PAD schrieb:
char Buffer[50000];
Du musst natürlich wieder einen draufsetzen
PS: Und wenn jetzt nícht endlich diese unheilige ItS-Funktion verschwindet.
-
Nehmt doch einfach sprintf.
-
Klasse Idee aber damit fällt das Design von Chris90 genauso auf die....
Den Fehler macht er bei seiner Art der Variablendeklaration. Glücklicherweise merkts schon der Compiler
das da was faul ist. Sonst hätten wir hier ein klassisches Modell für Buffer Overflow.
-
lol ich sags ja: 3 monate nicht mehr programmiert, schon hat man den salat
danke!!!
-
vorhin warens noch 3 jahre... hast du das überhaupt schon mal gemacht?
-
hey hey, sry, ich hab seit 3 jahren kein reines C mehr gemacht
bin grad mit c++, php und java unterwegs - deswegen