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
    - strcpy

    Allerdings 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!


Anmelden zum Antworten