double in string umwandeln



  • Hallo, ich habe eine kleine Funktion

    void WRITE(unsigned char ADR, char *str)
    	{		
    		int i=0;
    		KW=ADR;
    		delay(10);
    		for (i=0; i<strlen(str); i++)
    		{
     		 	DW=str[i];
      			delay(5);
    		} 
    	}
    

    Ich übergebe an die Funktion eine adresse und einen string. Nun möchte ich aber auch zahlen, bzw auch doublewerte an die Funktion übergeben. Da dachte ich mir
    cool, nehme ich einfach char * gcvt ( double value, int num, char * buffer );
    Tja zu früh gefreut. Der Compiler kenn dieese Fkt Prototypen nicht, ein anderer Compiler kommt aber nicht in Frage.

    Weiß jemand aus dem Forum wie ich einen doublewert in einn einen String konvertieren kann? Damit ich die Funktion auch weiterhin auch für Zahlen nutzen kann?
    freue mich über jede Antwort.



  • Die Funktion sprintf bietet diese Möglichkeit.



  • sprintf macht ja ne formatierte Bildschirmausgabe, ich brauche aber ne Konvertierung von double nach string 😕
    in php würde ich sagen
    wert="34.23";wert="34.23"; string="$wert";
    In C schaut es anders aus.
    Ich brauche eingentlich den String um damit weiter zu Arbeiten und nicht auf Bildschirm ausgeben.



  • Ne, sprintf macht keine formatierte Bildschirmausgabe, was Du meinst ist wahrscheinlich printf. Mit sprintf solltest Du Dein Problem in der Tat lösen können. Zu den Parametern siehe http://www.cplusplus.com/ref/cstdio/sprintf.html



  • du hast es mit printf verwechselt (wie schon Asgard sagte)

    die funktionsweise ist dem printf aber sehr ähnlich:

    char string[30];
    double zahl;
    sprintf(string,"%lf",zahl);
    

    sprich: sprintf([arrayname],[wie beim printf der 1. parameter],[wie beim printf die restlichen parameter]);

    mfG (c)h



  • @chille07
    Dann aber bitte auch zahl initialisieren ;).



  • @AJ:
    logisch! sonst steht auf dem array ja irgend ein unsinniger wert...

    mfG (c)h



  • Danke schön, habs mit sprintf so ähnlich wie chille07 hinbekommen. Ich poste mal die Lösung, falls es jamand später mal brauchen sollte:

    double Ergeb;
    char value_to_string[30];
    sprintf (value_to_string, "%.4g", Ergeb);
    

    es werden immer 4 Zahlen ausgegeben:
    z.B. 103.4, 12.24, 0.123

    Also genau das was ich gebraucht habe 😉
    Thx an alle.


Anmelden zum Antworten