float aus Textdatei lesen
-
Hallo,
ich habe eine Datei mit dem Inhalt
:a:1
Ich lese das aus wie folgt:
char line[255]; float elementValue; dataFile.getline(line, 255); sscanf(line, "%f", &elementValue); cout << elementValue;
Beim cout kommt dann aber raus:
-1.07374e+0084761704
Ich will aber nur die 1 haben. Das selbe kommt übrigens auch raus, wenn in der Datei steht:
:a:2
Ich kapier's nicht, aber so schwer kann's bestimmt nicht sein. Kann mir irgendeiner helfen?
Marco
-
'1' ist kein gültiger Floatwert für "%f". Du musst das "" schon von Hand wegschneiden: sscanf(s, "%f", &b), oder sowas (aka Stringstreams).
-
Danke, sieht schon besser aus. Jetzt kriege ich aber statt 1 folgendes:
14761704
Das kapiere ich auch nicht. Wie mache ich das denn außerdem wenn das a soz. variabel sein soll (es kann auch jeder andere Buchstabe sein)?
-
Wenn ich außerdem eine 1.23 auslesen wioll, kriege ich 1.234783856. ich will aber nur so viele nachkommastellen, wie ich auch eingegeben habe!
-
Lass Dir mal das Ergebnis von 1.0/2.0 ausgeben und schau mal ob es genau 0.5 ...
-
ja, das ist 0.5. eigentlich ist jetzt auch egel, ob ich da 1.23 oder 1.23xxxxxxxx kriege. wichtig ist nur, dass ich das %f im sscanf in :irgendein_buchstabe:%f verwandel. wie mache ich das? ich dachte eigentlich %c ist dann irgendein buchstabe.
-
Suche nach dem zweiten vorkommen des ":" , schneide alles inkl. des ":" ab und schon kannste es lesen.
Wenn Du eine Antwort in Form von Quelltext hast, bitte definieren ob das in C++ sein soll (weil Du im C++ Forum bist) oder in C (weil Du sscanf nimmst)