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 geeignetergruß,
walker