char* mit char* verknüpfen



  • danke, cppreference.de kenn ich auch schon 🙄
    was ich bräuchte, wär einfach mal 1 zeile code die mir hilft 😞



  • chris90 schrieb:

    danke, cppreference.de kenn ich auch schon 🙄

    Na also. Dann schau auch mal rein.

    Was wird eigentlich aus dem in ItS() erstellten char?
    Und 'new' ist ein C++ Operator.



  • sehr witzig, was meinst du, was ich bereits getan habe. es hat mir nur nichts geholfen.

    das neue char y wird als buffer für die itoa benutzt.



  • itoa benutzt du übrigens auch falsch!
    Wegen dem 2. Parameter droht ein Buffer Overflow.



  • chris90 schrieb:

    sehr witzig, was meinst du, was ich bereits getan habe. es hat mir nur nichts geholfen.

    Von cppreference:

    char *strcat( char *str1, const char *str2 );

    d.h. du kannst nur konstante chars benutzen und es kann eben so nicht klappen, wie du es dir wünschst.



  • danke für deine hilfe, aber geholfen hast du mit immer noch nicht... die Funktion ItS(int x) funktioniert einwandfrei

    nur nicht in verbindung mit strcat();

    oder wie sonst kann ich zwei char* verknüpfen??



  • chris90 schrieb:

    sehr witzig, was meinst du, was ich bereits getan habe. es hat mir nur nichts geholfen.

    Na dann schauen wir eben gemeinsam:

    CPP Reference schrieb:

    Syntax:
    char *strcat( char *str1, const char *str2 );
    The strcat() function concatenates str2 onto the end of str1, and returns str1.

    Aha! Der String vom 2. Parameter wird also an dem String des ersten angehängt.



  • ja und? es müsste dann ja str1 zurückgegeben werden: also "hallo5". Irre ich mich da?

    Und außerdem, @Dingo, wenn es mit strcat nicht klappt, wie kann ich es dann machen?



  • 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.



  • @Bug

    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 🙂


Anmelden zum Antworten