Probleme bei Ausgabe eines Varableninhaltes



  • Hallo zusammen,

    ich hoffe Jemand von euch kann mir helfen.
    Ich habe eine Varable, die einen Messwert besitzt. Leider enthält diese Varable nicht nur den Messwert sondern auch noch zusätzliche Zeichen.

    Zum besseren vorstellen des Problems hier der Varableninhalt meiner Variable (DOS Fenster):

    0.00000E+03
    iiiii[[[[

    In der ersten Zeile mein Messwert 0.
    Dann in den nächsten Zeilen die unterschiedlichen Zeichen.
    Kennt Jemand eine Möglichkeit,dass ich nur meinen Messwert in der varable habe?



  • Von welchem Typ ist denn deine Variable überhaupt? Sowas kannst du z.B. mit sscanf machen. Beispiel:

    int main() {
    	char str[]="0.10000E+03\r\niiiii[[[[ ";
    	double d=0.;
    	int rtn=sscanf(str,"%f",&d);
    	if(rtn>=1) {
    		printf("success! use variable 'd' for further calculations!\n");
    	}else {
    		printf("nothing read...\n");
    	}
    }
    


  • Die Variable ist vom Typ Char.
    Ich habe das mal so gemacht wie es in deinem Beispiel ist. Leider gibt er mir einen ganz anderen Wert aus.



  • Sorry, hatte es nicht getestet. Es muss so aussehen:

    int rtn=sscanf(str,"%lf",&d);
    

    Noch kurz was hierzu:

    In2 schrieb:

    Die Variable ist vom Typ Char.

    Das stimmt nicht. Bitte präsizer sein. Der Typ heißt eher char als Char (in C und C++ ist Groß-/Kleinschreibung wichtig!). Und da deine Variable mehrere Zeichen enthält, wird es sich wohl eher um ein char-Array handeln. Der Typ char kann nur ein einzelnes Zeichen enthalten. 🙂



  • _matze schrieb:

    Der Typ char kann nur ein einzelnes Zeichen enthalten. 🙂

    Naja... wenn man ganz genau sein will, enthält ein "char" immer nur ein _Codepoint_... ob das dann wirklich ein Zeichen ist, ist wieder etwas anderes...
    es kann z.B. auch ein Combinig-Character sein (was allein kein Zeichen (Glyph) ist).

    Siehe auch:
    http://www.c-plusplus.net/forum/161217



  • Danke das Problem hat sich erledigt.
    Wenn ich d mit float deklariere funktioniert es.


Anmelden zum Antworten