'char []' kann nicht in 'char [16]' konvertiert werden



  • Hallo habe folgendes kleine Programm und weiss nicht wie ich den Fehler beheben
    kann:

    #include <iostream>
    #include <sstream>
    using namespace std;
    
    void speicher (char Speicher[16]);
    
    void main()
    {
    	string test="Text";
    	stringstream wandeln; 
    
    	wandeln << test;
    	char hallo[16];
    	wandeln >> hallo;
    	cout <<"Hallo: " <<hallo <<endl;
    	speicher(hallo);
    }   
    
    void speicher(char Speicher[16])
    {	
    	char lager[16];
    	lager=Speicher;
    }
    

    In der Funktion speicher habe ich die Fehlermeldung aus dem Titel diese Beitrages bei lager=Speicher;



  • Statt

    lager=Speicher
    

    schreib

    memcpy(lager, Speicher, sizeof(lager));
    


  • Wenn du den Strings kopieren willst, machst du das am Besten mit strcpy().

    Die Zuweisung mit Strings geht nämlich nicht mit dem '=' - Operator (Es sei denn, du überschreibst den Operator dementsprechend)



  • derBob schrieb:

    Die Zuweisung mit Strings geht nämlich nicht mit dem '=' - Operator (Es sei denn, du überschreibst den Operator dementsprechend)

    1. Frage: Wie mache ich das in C?
    2. Frage: Angenommen es würde um C++ gehen: Wie mache ich das in C++?



  • @ Shade Of Mine:

    zu Frage 1:
    --------

    Sorry, geht meines Wissens nach nur in C++

    zu Frage 2:
    ---------

    in etwa so:

    class CMyString
    {
    private: char* text;
    
    public:	CMyString()
    		{
    			text=new char;
    			::strcpy(text,"\0");
    		};
    		CMyString(char* text)
    		{
    			this->text=new char[strlen(text)+1];
    			::strcpy(this->text,text);
    		}
    
    		CMyString operator=(char* original)
    		{
    			if(text!=NULL){ delete text; }
    			text=new char[strlen(original)+1];
    			::strcpy(text,original);
    			return text;	
    		}
    		char* GetText(){return text;}
    };
    
    int main() 
    { 
    	CMyString neu;
    	neu="Hallo Welt";
    
    	printf(neu.GetText());
    
    	return 0;
    }
    


  • derBob schrieb:

    in etwa so:

    Ja, aber es geht hier
    1. um C
    2. um char*

    und weder in C noch bei char* lässt sich der op= überladen.



  • Shade Of Mine schrieb:

    1. Frage: Wie mache ich das in C?
    2. Frage: Angenommen es würde um C++ gehen: Wie mache ich das in C++?

    Dann frag nicht, wenn es Dich nicht interessiert!



  • derBob schrieb:

    Dann frag nicht, wenn es Dich nicht interessiert!

    *lol*

    Ich wollte dich mit der Frage auf eine Themenverfehlung hinweisen.



  • Danke an groovemaster2002,

    dass hat mir weiter geholfen.


Anmelden zum Antworten