www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik sprintf()


Autor: Programmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich kann bei meinem Programm sprintf(,,) nicht verwender. Gibt es
andere Funktionen, die das gleiche ermögliche, sprich auch eine
formatierte Ausgabe an einen Buffer ermöglichen?
lg
Programmer

Autor: Beobachter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Programmcode? Compiler, Linker? Controller? Warum "sprintf()" nicht
verwendbar?
Bitte mehr Info sonst antwortet niemand...

Autor: inoffizieller WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
selber basteln...
Wenn die eingehenden Daten immer gleicher Gestalt (z.B. immer Integer)
sind, kann man die Formatierung selber machen...

Autor: Beobachter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vsprintf, vnsprintf, vfprintf

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für ein Compiler? Was genau möchtest Du ausgeben? Wenn es Zahlen
sind, dann schau mal in die stdlib.h, die enthält eine ganze Reihe von
Funktionen zur Umwandlung unterschiedlicher Zahlen in ASCII-Strings.
Diese Funktionen (bei WINAVR-C (AVR-libc) z.B. itoa, utoa, dtostr,
dtostre usw., bei anderen Compilern heißen die z.T. anders) sind im
Einzelfall wesentlich platzsparender als die printf-Geschichten, decken
dafür aber natürlich auch nur den jeweiligen Einzelfall ab.

Autor: Programmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann kein sprintf verwenden, da ich eine SPS in C programmiere und
diese alle print() -sachen nicht unterstützt.
Ich möchte das:
sprintf(SendBuffer,"Sekunden: %d\x1b[0;0H\n", RTCGetTime.second);

ohne sprintf() programmieren.

Mein Beispiel lautet so:
Kopiere einen String in ein Array (1), kopiere das ganze Array in den
SendBuffer (2) und dann übergib den SendBuffer einer Struktur, die das
weitere erledigt.

(1) strcpy(WriteData, "hello");
(2) memcpy(SendBuffer, WriteData, 5 * sizeof (USINT));
(3) FrameWriteStruct.buffer = (UDINT) SendBuffer;

Mein Problem ist jetzt, dass ich die Uhrzeit ausgeben möchte, welche
ich von einer Struktur bekomme (RTCGetTime.second) und diese dann nicht
gleich in ein Array schreiben kann, sondern vorher noch formatieren
muss, da das Programm zyklisch abläuft und ich die Uhrzeit ja immer
überschreiben möchte, da ich sonst auf dem Hyperterminal endlose
Uhrzeiten ausgegeben werden.
Ich hab mir schon gedacht das ganze in eine Struktur zu schreiben.
Vielleicht hat da jemand eine Idee.
Vielen Dank
lg
Programmer

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann schau Dir mal das Bsp. von Rahul in diesem Thread an:
http://www.mikrocontroller.net/forum/read-1-428783.html
Dann zu jeder Ziffer 0x30 addieren, und schon hast Du die
ASCII-Darstellung...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könntest Du versuchen, hier mit nur EINEM Pseudonym aufzutreten?

Gestern nanntest Du Dich noch "Eder", heute "Programmer" ...

Auch wäre es hilfreich, wenn Du nicht wegen jeder neu auftretenden
Frage, die dasselbe Problem behandelt, einen neuen Thread aufmachen
würdest.

Derzeit dümpeln hier zwei namens VT100, einer namens Hyperterminal und
einer namens Serielle Übertragung herum - und jetzt noch dieser hier.
Und in allen geht es letztlich um das gleiche banale Problem.


Genereller Literaturhinweis:

Kernigham & Ritchie, Programmieren in C, 2. Auflage, Hanser Verlag

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.