Kontrollierte Eingabe und Ausgabe



  • Windows.

    Was meinst Du mit ncurses?





  • Hallo,

    also der Tip printf mit dem Formatierungszeichen %E zu kombinieren, war ein sehr guter Ratschlag.

    Ich habe nur noch eine Frage. Ist es möglich die Anzahl der Zeichen für den Exponenten zu modifizieren?

    printf("%-8.1E\n", 1234.0);
    

    Dieser Ausdruck liefert mir drei Zeichen für den Exponenten - Ich brauche allerdings nur zwei.

    Das Problem ist, dass ich 10 Zahlen nebeneinander auf dem Bildschirm darstellen muss und somit nur sieben Zeichen für jede Zahl vergeben kann (1 Leerzeichen zur Trennung). Für konstruktive Vorschläge bin ich jederzeit offen...



  • %f und %g ausprobieren?



  • Wie meinst Du das?

    Ich möchte, dass die Zahl 1325 als 1.3E+02 auf dem Bildschirm dargestellt wird - zu sehen ist aber immer 1.3E+002 - das sind aber zuviele Zeichen auf dem Bidlschirm, wenn 10 Zahlen nebeneinander stehen sollen?

    Kannst Du noch einen Rat geben? Wie wurden solche Probleme (Matrizendarstellungen) bei frühreren MS-DOS-Anwendungen gelöst?



  • jetzt probier doch einfach mal %f und %g statt %e. ich weiss nicht, ob es was hilft, aber probiers doch einfach.

    *damals* hat man das alles selber gemacht, wenn es das noch nicht gab. das waren noch zeiten!



  • Hallo,

    danke für die Bemühungen aber ich glaube wir reden aneinander vorbei bzw. ich verstehe Dich nicht.

    1. Ich habe %f und %g und %e schon MEHRFACH ausprobiert.

    Ergebnis:
    - %e stellt die Zahl prinzipiell so dar, wie ich sie sehen möchte, aber ein Element zuviel für den Exponenten (3 Zahlen - anstatt 2)!

    - Angenommen, ich wollte die formatierte Zahl als String selbst noch weiterformatieren, muss ich dann sprintf benutzen, um die Formatierung in den Speicher zu schreiben?



  • wenn das funktioniert so wie du es machst, dann mach das. ich hab keine ahnung, was du mit sprintf genau machen willst.
    wenn du von 3 auf 2 stellen willst, sprintf(%e/f/g), sscanf dieses strings in seine bestandteile, sprintf der bestandteile.

    ist dir diese eine stelle so wichtig?



  • Kannst Du bitte ein explizites Beispiel geben, wie die einzelnen Formatbezeichner miteinander kombiniert werden. Folgendes funktioniert nicht!

    printf("%7.2e/f/g ", 1231.85);
    

    Die Ausgabe soll sein:
    1.2e+03



  • viel spass damit. wie lange hast du eigentlich probiert, dein problem zu loesen?

    #include <stdio.h>
    #include <string.h>
    
    int main(void)
    {
    	char foo[123456], *p;
    	float a;
    	int b;
    	sprintf(foo, "%e", 1231.85);
    	puts(foo);
    	p = strchr(foo, 'e');
    	*p++ = 0;
    	sscanf(foo, "%g", &a);
    	sscanf(p, "%d", &b);
    	printf("%f %d\n", a, b);
    	sprintf(foo, "%ge%02d", a, b);
    	puts(foo);
    	return 0;
    }
    

Anmelden zum Antworten