1.1p 🚧 printf, sprintf
Formatiertes Ausgeben von Werten
- https://de.wikipedia.org/wiki/Printf🔗
- https://de.wikibooks.org/wiki/C-Programmierung:_Einfache_Ein-_und_Ausgabe#printf
- https://en.cppreference.com/w/c/io/fprintf 🔗
- https://mezdata.de/pi-bluej/125_passwort-projekt/index.php
Tests mit Java
public class PrintfDemo{
public static void test(){
String s = "Hallo";
System.out.printf("\fHallo zu printf \n"); // \f Konsole löschen \n neue Zeile
System.out.printf("Strings:%n"); // %n neue Zeile
System.out.printf(" padding:\n");
System.out.printf("\t[%10s]\n", s); // \t Tabulator
System.out.printf("\t[%-10s]\n", s);
System.out.printf(" truncating:\n"); // Abschneiden, auf Größe reduzieren
System.out.printf("\t%.4s\n", s);
System.out.printf("Characters:\t%c %%\n", 'A');
System.out.printf("Integers:\n");
System.out.printf("\tDecimal:\t%d [%4d] [%-4d] [%04d] %+d %+d\n",1,2,3,4,5,-6);
System.out.printf("\tHexadecimal:\t%x %x %X %#x %02x %#04x %#06x\n", 5, 10, 10, 6,10,10,127);
System.out.printf("\tOctal:\t\t%o %#o %#o\n", 10, 10, 4);
System.out.printf("Floating point:\n");
System.out.printf("\tRounding:\t%f %.0f %.32f\n", 1.5, 1.5, 1.3);
System.out.printf("\tPadding:\t%05.2f %.2f %5.2f\n", 1.5, 1.5, 1.5);
System.out.printf("\tScientific:\t%E %e\n", 1.5, 1.5);
System.out.printf("\tHexadecimal:\t%a %A\n", 1.5, 1.5);
System.out.printf("\tSpecial values:\t0/0=%f 1/0=%f\n", 0.0/0.0, 1.0/0.0);
System.out.printf("\tDifference f&g:\tf: %f g: %g\n", 0.00001, 0.00001);
}
}
Ausgabe
Hallo zu printf
Strings:
padding:
[ Hallo]
[Hallo ]
truncating:
Hall
Characters: A %
Integers:
Decimal: 1 [ 2] [3 ] [0004] +5 -6
Hexadecimal: 5 a A 0x6 0a 0x0a 0x007f
Octal: 12 012 04
Floating point:
Rounding: 1,500000 2 1,30000000000000000000000000000000
Padding: 01,50 1,50 1,50
Scientific: 1,500000E+00 1,500000e+00
Hexadecimal: 0x1.8p0 0X1.8P0
Special values: 0/0=NaN 1/0=Infinity
Difference f&g: f: 0,000010 g: 1,00000e-05
Test mit Arduino STM32
Bei dem Testprogramm wird ab Floating Point normalerweise nur noch Mist ausgegeben!
Das liegt daran, dass die Verarbeitung von Fließkommaformatierungen recht viel Programmspeicher (ca. 2,5 KiByte) benötigen würde und bei den kleinen µC dies vermieden werden sollte, so wurde der Code für Float Printf einfach weg gelassen (default).
In den Werkzeug-Einstellungen für den STM32 kann die ganze printf-Lib (+ Float Printf) eingebunden werden in dem man sie auswählt.
void setup() {
char buf[100];
Serial.begin(9600); // Serielle Schnittstelle starten und Baudrate festlegen
const char* s = "Hello";
Serial.printf("Strings:\n"); // same as puts("Strings");
Serial.printf(" padding:\n");
Serial.printf("\t[%10s]\n", s);
Serial.printf("\t[%-10s]\n", s);
Serial.printf("\t[%*s]\n", 10, s);
Serial.printf(" truncating:\n");
Serial.printf("\t%.4s\n", s);
Serial.printf("\t%.*s\n", 3, s);
Serial.printf("Characters:\t%c %%\n", 'A');
Serial.printf("Integers:\n");
Serial.printf("\tDecimal:\t%i %d %.6i %i %.0i %+i %i\n",1,2,3,0,0,4,-4);
Serial.printf("\tHexadecimal:\t%x %x %X %#x\n",5,10,10,6);
Serial.printf("\tOctal:\t\t%o %#o %#o\n", 10, 10, 4);
Serial.printf("Floating point:\n");
//sprintf(buf,"\tRounding:\t%f %.0f %.10f\n", 1.5, 1.5, 1.3);
//Serial.print(buf);
Serial.printf("\tRounding:\t%f %.0f %.10f\n", 1.5, 1.5, 1.3);
Serial.printf("\tPadding:\t%05.2f %.2f %5.2f\n", 1.5, 1.5, 1.5);
Serial.printf("\tScientific:\t%E %e\n", 1.5, 1.5);
Serial.printf("\tHexadecimal:\t%a %A\n", 1.5, 1.5);
Serial.printf("\tSpecial values:\t0/0=%g 1/0=%g\n", 0.0/0.0, 1.0/0.0);
Serial.printf("Fixed-width types:\n");
Serial.printf("\tLargest 32-bit value is %" PRIu32 " or %#" PRIx32 "\n",
UINT32_MAX, UINT32_MAX );
}
void loop() {
}
Ausgabe
Strings:
padding:
[ Hello]
[Hello ]
[ Hello]
truncating:
Hell
Hel
Characters: A %
Integers:
Decimal: 1 2 000003 0 +4 -4
Hexadecimal: 5 a A 0x6
Octal: 12 012 04
Floating point:
Rounding: 1.500000 2 1.3000000000
Padding: 01.50 1.50 1.50
Scientific: 1.500000E+00 1.500000e+00
Hexadecimal: a A
Special values: 0/0=nan 1/0=inf
Fixed-width types:
Largest 32-bit value is 4294967295 or 0xffffffff
Ein Kommentar
Kommentare sind geschlossen.