variablen in string übergeben

Encor3

Mitglied
Habe gerade ein wohl sehr trivales Problem.

Ich habe 4 float Variablen, die in einen String mit folgendem Aufbau übergeben werden sollen:

"A,B,C,D";

Code:
char* wht = 'werta,wertb,wertc,wertd';
gibt den Fehler dass int/float != char

Code:
char* wht = "werta,wertb,wertc,wertd";
übergibt logischerweise nicht die Variablenwerte sondern handled das ganze als normalen "Text".

Also irgendwie stell ich mich da ehrlich gesagt ziemlich blöd an, denn ich bin mir sicher, dass die Lösung eigentlich sehr einfach sein müsste. :)

//EDIT


Habs jetzt mal folgendermaßen probiert:
Code:
LPCTSTR   wht;

wht.Format( "%u,%u,%u,%u", wert1,wert2,wert3,wert4 );

aber folgende Fehlermeldung erhalten:
"request for member `Format' in `wht', which is of non-aggregate type `const TCHAR*' "
 
Zuletzt bearbeitet:
wandelt ftoa nicht lediglich ne float zahl in nen string um?Denn das Problem dass die in der oben genannten Form(a,b,c,d) aneinandergreiht werden sollen bestünde weiterhin.
 
Wenn du unter Windows bist, kannst du wsprintf verwenden, das kann auch floats:

char szBuffer[300];

wsprintf( szBuffer, "%f,%f,%f,%f", werta,wertb,wertc,wertd );
 
hmm habe jetzt das problem das der string (der in ne datei gespeichert wird) lediglich f,f,f,f enthält wie es scheint.

ok mit sprintf() gehts :) thx

um das ganze zu komplettieren und eventuell anderen Leuten mit dem selben Problem zu helfen hier nochmal der arbeitende Code Ausschnitt:

Code:
FILE* datei = fopen("datei.dat", "w");
char * wht;
sprintf( wht, "%g,%g,%g,%g", wert1,wert2,wert3,wert4);
fwrite(wht, sizeof(char), strlen(wht)+1, datei); 
fclose(datei);

kleine Erläuterung: Ich habe %g statt %f verwendet da %g eine Float nur soweit anzeigt wie sie geht, z.B. wird aus 2.32 nicht 2.320000 bzw. was bei mir dann passiert ist auch 2.319999
 
Zuletzt bearbeitet:
Aha, flixt, hab die falsche angesagt. Ich wusste, dass eine der beiden Varianten floats kann und die andere nicht. Nuja, du hast es ja selber rausgefunden :)

Übrigens, du kannst mit %.2f die Ausgabe der Nachkommastellen auf 2 begrenzen (bzw. was immer nach dem Punkt steht.
 
ok gibt doch wieder nen Problem, wenn ich die 4 floats auf 2 variablen verteilen will kommt nen Laufzeitfehler :/
Code:
char * wht;
char * eht;
 
sprintf( wht, "%g,%g,%g,%g", wert1,wert2,wert3,wert4); 
sprintf( eht, "%g,%g,%g,%g", wert4, wert3, wert2, wert1);
 
fwrite(wht, sizeof(char), strlen(wht)+1, datei);
fwrite(eht, sizeof(char), strlen(eht)+1, datei);

muss an dem sprintf(eht,...) liegen aber ich sehe da keinen Fehler :(


jo das mit dem .2f ist auch ne Möglichkeit, aber ich lese die Werte aus nem Spiel aus und da sind die Werte leider nie in ner "festen" Länge :)
 
Aua!

Du musst die beiden Pointer schon auf etwas Sinnvolles zeigen lassen:

Also entweder:

char wht[300];
char eht[300];


oder:

char * wht = new char[300];
char * eht = new char[300];

// schnippelschnappel


// wenn fertig
delete[] eht;
delete[] wht;
 
sowas hab ich mir fast schon gedacht :) hatte es sogar schon mit delete probiert, aber das allein hat nicht gereicht ;) also thx 4 help :)
 
Zurück