Hallo Leute, ich hätte da mal wieder eine Frage: Ich möchte den "Inhalt" einer uint_16-Variable über ein Display ausgeben. Für die Ausgabe bräuchte ich aber diesen "Inhalt" als char-Variable. Wie kann ich also eine INT-Variable an ein CHAR übergeben??
Wenn ich Dich richtig verstanden habe, mit itoa oder sprintf, beides benötigt aber einen char array.
In C mit sprintf oder snprintf. zB: uint16_t wert = 1234; char buffer[16]; sprintf(buffer, "%u", wert);
Um welche Programmiersprache geht es? In C und ähnlichen Sprachen werden die Typen klein geschrieben und Zeichenfolgen oft als Arrays behandelt. Daher hat man dann kein char sondern ein char* (Zeiger auf char, großer Unterschied) Aus diesem Array kann man aber die einzelnen Zeichen (char) auslesen. Zur Umwandlung von Werten in menschenlesbarer Darstellung gibt es verschiedenen Funktionen. Die allgemeinste Methode wäre printf bzw sprintf zu nehmen. Es gibt aber auch noch itoa.
Ich würde sagen: "Ganz vorsichtig", damit nichts verloren geht! Ansonsten, wie wär's mit einer etwas genaueren Spezifikation. Muss aber nicht sein.
Dirk B. schrieb: > In C und ähnlichen Sprachen werden die Typen klein geschrieben und > Zeichenfolgen oft als Arrays behandelt. > Daher hat man dann kein char sondern ein char* (Zeiger auf char, großer > Unterschied) Ja da hast du recht void LCDSoftText(char *__putstr, unsigned int xpos, unsigned int ypos, unsigned char color) { char __ps; unsigned int xp,yp; if(fontwidth==0) return; //Kein Font ausgewählt xp=xpos; yp=ypos; while((__ps = *__putstr)) { __putstr++; if (__ps== 0) break; LCDSoftChar(__ps,xp,yp,color); xp+=fontwidth; //Nächstes Zeichen if(xp>=LCD_WIDTH) { xp=0; yp+=fontheight; } //Nächste Zeile } } und damit möchte ich eine Zahl ausgeben die in einer INT-Variable steckt
Be S. schrieb: > https://www.mikrocontroller.net/articles/FAQ#Wie_kann_ich_Zahlen_auf_LCD.2FUART_ausgeben.3F danke für den link, der ist echt gut aber wenn ich jetzt itoa( i, Buffer, 10 ); eingebe dann meckert der Compiler dass er vor der Konstanten einer klammer erwartet hat. Woran liegt das?
Noch als Anmerkung: itoa gehört nicht zum C-Standard und es gibt Implementierungen die nur zwei Parameter haben (BAsis ist fest auf 10).
Dirk B. schrieb: > In C und ähnlichen Sprachen werden die Typen klein geschrieben Außer unter Windows. Da gibt's aus irgendeinem Grund für jeden Typ einen typedef, der genauso heißt, aber komplett groß geschrieben wird und den man offenbar bevorzugen soll. Wahrscheinlich um maximal inkompatibel zu anderen Systemen zu sein.
Diese Typedefs definiert die WinAPI und nutzt diese in ihrer gesamten Deklaration. Das hat nix mit C zu tun sondern Folge dessen das du explizit oder implizit den Windows header angezogen hast. So ist zumindest die Definition der WinAPI einheitlich und man muss nicht abhängig vom Zielcompiler die API Deklarationen/Dokumentation anders beschreiben. Ein int ist daher wohl nicht eindeutig und DWORD doch schon eher.
Thomas K. schrieb: > So ist zumindest die Definition der WinAPI einheitlich und man muss > nicht abhängig vom Zielcompiler die API Deklarationen/Dokumentation > anders beschreiben. Ein int ist daher wohl nicht eindeutig und DWORD > doch schon eher. Es gibt aber auch INT und FLOAT und sogar VOID.
Jupp, ist richtig. Aber wie gesagt alles Definitionen für die WinAPI. Ich wollte nur darauf hinweisen, dass dieses nichts mit "einem C Compiler auf Windows" zu tun hat. Und bevorzugen sollte man diese auch nicht allgemein in C auf Windows, außer es geht um die Nutzung/Aufrufe von WinAPI Funktionen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.