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)


Log in to reply