Zwei Zeiger (char*) miteinander verbinden
-
Hallo,
ich weiß nicht, wie ich zwei Zeiger char* miteinander verbinden kann.
Hier ist mein Funktionsaufbau:
int API_AddChatMessage(char *text) { if (CheckHandles()) { char *_text = { "• {ffffff}" }; samp.addChatMessage(_text); return 1; } return FUNCTION_ERROR_CODE; }
Ich möchte den Inhalt von "text" an _text anhängen. Ich habe nach meinem Problem gegoogelt und folgende Funktionen ausprobiert:
- memcpy
- strcat
- strncat
- strcpyAllerdings sind die letzten 3 Funktionen bereits deprecated und ich möchte diese nicht mehr verwenden.
Bei memcpy funktioniert dies ebenfalls nicht. So sieht mein neuer Code mit memcpy aus:
int API_AddChatMessage(char *text) { if (CheckHandles()) { char *_text = { "• {ffffff}" }; memcpy(_text, text, strlen(text)); samp.addChatMessage(_text); return 1; } return FUNCTION_ERROR_CODE; }
Das einzige was ich agezeigt bekomme (in der Console wenn ich unter samp.addChatMessage noch "cout << _text << endl;" anhänge), ist nur der erste Teil. Sprich: • {ffffff}
Was mache ich falsch?
-
Du hast 3 verschiedene Welten. Entweder du nimmst CLI, C++ oder C.
#include <stdlib.h> #include <string.h> void concatInC() { char *str1 = "Hallo "; char *str2 = "Welt"; char* strRes = (char*)calloc(strlen(str1) + strlen(str2) + 1, 1); strcat(strRes, str1); strcat(strRes, str2); } #include <string> void concatInCPP() { std::string str1 = "Hallo "; std::string str2 = "Welt"; std::string strRes = str1 + str2; } void concatInCLI() { System::String^ str1 = "Hallo "; System::String^ str2 = "Welt"; System::String^ strRes = str1 + str2; }
By the way
char *_text = { "• {ffffff}" }; _text[0]= 1;
ist verboten!
Du darfst Stringliterale nicht ändern!