Eigenes strcat



  • Hi,
    ich wollte mir gerade ein eigenes strcat (als statische Methode) schreiben.
    In der markierten Zeile krieg ich jedoch immer eine Exception. Weiß jemand, woran das liegt??

    char* StrFun::strcat2(char *dest, const char *src) {
    	char *start = dest;
    	while(*dest)
    		dest++;
    	while(*src) {
    	    *dest= *src;
    		dest++;
    		src++;
    	}
    	*dest = 0;
    	return start;
    }
    

    Das is der dazugehörige Header:

    #ifndef STRFUN_H
    #define STRFUN_H
    
    class StrFun {
    private:
    	StrFun();
    public:
    	static int strlen(const char* str);
    	static char* strcat2(char *str, const char *str2);
    };
    
    #endif
    


  • Wo ist da eine Zeile markiert??

    Auf den ersten blick sieht alles ok aus. Sind vielleicht die char*s die du übergibst ungültig?



  • Sorry, hab vergessen die Zeile mit der Exception zu markieren. *g
    Hier nochmal der Code:

    char* StrFun::strcat2(char *dest, const char *src) { 
        char *start = dest; 
        while(*dest) 
            dest++; 
        while(*src) { 
            *dest= *src;    // Hier gibt es eine Exception
            dest++; 
            src++; 
        } 
        *dest = 0; 
        return start; 
    }
    

    Anmerkung: Die 2 Parameter heißen auch in der Deklarion (sprich Header) dest und src.

    Mit dem Code test ich die Methode:

    #include <iostream>
    #include "StrFun.h"
    using namespace std;
    
    int main() {
    	char * str = "hallo";
    	char *str2 = "blub";
    
    	StrFun::strcat2(str, str2);
    	cout << str << endl;
    	cout << str2 << endl;
    
    	return 0;
    }
    


  • jetzt ist klar warum das nicht geht. das sind string-literale (read-only speicher);



  • char * str = "hallo";

    das ist der Fehler..

    versuchs mal mit

    char str[100];
    strcpy(str,"Hallo");



  • ARGH!
    Ja, das ist es.
    Vielen Dank für die schnelle Hilfe!
    Manchmal ist man irgendwie blind für seine eigenen FEhler 😠



  • Ich versteh nicht ganz, warum du eine Klasse (mit statischen Elementfunktionen)I verwendest...
    Du willst doch höchstwahrscheinlich nie Instanzen von StrFun erzeugen,
    da wär ein Namensbereich geeigneter 😉

    gruß,
    walker


Anmelden zum Antworten