Char* verbinden



  • Hallo!

    Ich möchte Strings zusammenfügen, aber es scheitert...
    Hier mein Ansatz:

    char* returnValue;
    char doubleString[9];
    
    double value = getOutput(i); //liefert -1.123
    sprintf(doubleString, "%f", value);
    returnValue = strcat(returnValue, doubleString); //diese Zeile funzt net
    returnValue = strcat(returnValue, ",");
    

    Was ist da falsch??



  • Hast du denn überhaupt Speicherplatz angefordert, auf den returnValue verweist? Mit nicht-initialisierten Zeigern zu arbeiten ist nicht gerade angenehm.

    PS: Und nimm lieber std::string, anstatt dich mit char-Zeigern zu ärgern.



  • CStoll schrieb:

    Hast du denn überhaupt Speicherplatz angefordert, auf den returnValue verweist? Mit nicht-initialisierten Zeigern zu arbeiten ist nicht gerade angenehm.

    Nein, wie müsste ich das in diesem fall machen?



  • Wie fordert man schon Speicher an - mit new[] natürlich.

    char* returnValue = new char[GROESSE];//wieviel Platz du brauchst, mußt du selber wissen
    returnValue[0]='\0';//strcat() erwartet einen Nullterminierten String, also belegen wir das Array passend vor
    


  • CStoll schrieb:

    Wie fordert man schon Speicher an - mit new[] natürlich.

    char* returnValue = new char[GROESSE];//wieviel Platz du brauchst, mußt du selber wissen
    

    So hatte ichs auch probiert aber:

    error C2065: 'new': nichtdeklarierter Bezeichner...



  • Kann es etwa sein, daß du dich ins falsche Board verlaufen hast? (oder anders: schreibst du in C oder in C++?)



  • Gretchen schrieb:

    CStoll schrieb:

    Wie fordert man schon Speicher an - mit new[] natürlich.

    char* returnValue = new char[GROESSE];//wieviel Platz du brauchst, mußt du selber wissen
    

    So hatte ichs auch probiert aber:

    error C2065: 'new': nichtdeklarierter Bezeichner...

    Könnte es sein das du mit einem reinen C-Compiler arbeitest?
    Wenn ja, sollte dieser Post ins C-Forum verschoben werden (zumal ich eh keinerlei C++ dabei sehe).

    cu André



  • Upsi.. *rotwerd*

    Ja, es ist C...



  • Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • asc schrieb:

    Wenn ja, sollte dieser Post ins C-Forum verschoben werden (zumal ich eh keinerlei C++ dabei sehe).

    Das hatte ich auch vor - ich wollte nur nochmal nachfragen.

    @gretchen: in C verwendet man malloc() - char* returnValue = malloc(GROESSE); bzw. char* returnValue = calloc(GROESSE,1); (bei letzterem kannst du dir auch das Vorbelegen mit '\0' ersparen).


Anmelden zum Antworten