strcpy funktioniert nicht



  • Hallo,

    habe ein Problem mit strcpy.

    CString tmp="Test";
    char *t="";
    
    strcpy(t,tmp);
    

    Immer wenn ich zu dieser Stelle Komme dann kommt eine Fehlermeldung mit
    Speicheradresse ... . Zum Compilieren geht es und ich hab es auch in VC++ 6.0 immer so gemacht. In VC++ 2008 kommt die Meldung.

    Thx


  • Mod

    char *t="";
    

    Ist ein Zeigerauf eine Konstante!
    Das kann nicht funktionieren.

    Versuche Dich mal an einem Tutrorial und lerne was Zeiger sind...



  • Probier's mal so:

    CString tmp="Test";
    char *t="      ";
    
    strcpy(t,tmp);
    

    und überlege mal genau den Unterschied.



  • Also es geht immer noch nicht. und Martin ich habe die Funktion bzw. die Klasse in der das alles steht von jemand übernommen und im 6 er hat es da nie Probleme gegeben. Wie muss ich das dann schreiben ?



  • CString tmp = "Test";
    char *t = new char[ strlen( tmp ) + 1 ];
    strcpy( t, tmp );
    ...
    delete [] t;
    

  • Mod

    pmb schrieb:

    Also es geht immer noch nicht. und Martin ich habe die Funktion bzw. die Klasse in der das alles steht von jemand übernommen und im 6 er hat es da nie Probleme gegeben. Wie muss ich das dann schreiben ?

    Gleicher Code schmiert bei mir in VC6 genauso ab.
    Es kommt nur darauf an, wie weit der Bereich überschrieben wird.
    Das Problem ist eben das "" kein gültiger Speicherbereich ist in den man nur irgendetwas hinein kopieren könnte.



  • pmb schrieb:

    Immer wenn ich zu dieser Stelle Komme dann kommt eine Fehlermeldung mit
    Speicheradresse ... . Zum Compilieren geht es und ich hab es auch in VC++ 6.0 immer so gemacht. In VC++ 2008 kommt die Meldung.

    also hast Du bis jetzt immer Bugs geschrieben und in VC++ 6 wird eben noch net so genau geprüft wie in 2008. Anders gesagt hast du die ganze Zeit glück gehabt das deine programme net abgeschmiert sind.

    Gruß Matthias


Anmelden zum Antworten