Forum: Mikrocontroller und Digitale Elektronik Starthilfe - Stringformatierung in C


von muckel (Gast)


Lesenswert?

Hallo zusammen,

ich sitze hier gerade vor meinem ersten kleinen Projekt (ATmega 128 mit 
AVR-Studio) und möchte nur einen String formatiert auf ein Display 
bringen, und alleine das bringt mich schon an den Rand der 
Verzweiflung...
Ich bin absoluter Neuling in C, wahrscheinlich ist genau das schon das 
Problem. Tutorials lesen allein haben mir nicht geholfen. Also, die 
Ausgabe auf dem LCD funktioniert schon mal, aber ich habe einen String, 
sagen wir mal 1234 in einer Variable. Dieser soll nun ggf. vorne mit 0 
aufgefüllt werden damit er immer 5 Zeichen lang ist und zusätzlich soll 
noch ein Trennzeichen "." nach den ersten zwei Ziffern eingefügt werden.

Klingt simpel, ist es bestimmt auch, leider nicht für mich. Nach mehrere 
frustreichen Stunden wende ich mich daher an Euch.

Würde mich über eine kleine Starhilfe freuen.

Gruß,
Muckel

von Steel (Gast)


Lesenswert?

Ein String in einer Variablen klingt verdächtig.
Vermutlich hast du eine Zahl in einer Variablen die vom Typ Integer ist 
und willst diese nun formatiert ausgeben.
1
printf("%05f",Variable / 100.0);

sollte funktionieren.

Ansonsten guckst du hier:
http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.12.html#printf

von Karl H. (kbuchegg)


Lesenswert?

> Ich bin absoluter Neuling in C, wahrscheinlich ist genau das schon
> das Problem.

Allerdings. Die generelle Empfehlung lautet: mach die ersten Schritte 
auf dem PC. Da hast du eine viel bessere Debug-Umgebung.

> aber ich habe einen String, sagen wir mal 1234 in einer Variable.
> Dieser soll nun ggf. vorne mit 0 aufgefüllt werden damit er immer
> 5 Zeichen lang ist.

Na ja. Wenn es nur um die Ausgabe geht, musst du den String ja nicht 
manipulieren. Es reicht ja, wenn du vor dem eigentlichen String eine 
entsprechende Anzahl an Leerzeichen ausgibst. Ein Benutzer weiß ja 
nicht, wias du intern gemacht hast, der sieht nur, dass vor "Hugo" noch 
ein Leerzeichen steht. Ob das dort steht, weil du " Hugo" ausgegeben 
hast, oder ob du vorher ein einzelnes Leerzeichen ausgegeben hast und 
dann da "Hugo" drann geschrieben hast, kann man ja im Ergebnis nicht 
mehr unterscheiden.

Dazu musst du wissen, wie lang der String eigentlich wirklich ist 
(strlen macht das) und daraus dann errechnen, wieviele Leerezeichen du 
brauchst. Und die gibst du dann in einer Schleife entsprechend aus, ehe 
du hinten nach den String drann pappst.

Solche Spielchen sind tatsächlich oft eine der ersten Übungen für 
C-Neulinge. Und du wärst damit auf einem PC mit seiner einfacheren und 
besseren Debug-Umgebung wesentlich besser aufgehoben (und natürlich 
einem ordentlichen C-Buch)

von Udo S. (urschmitt)


Lesenswert?

Karl Heinz Buchegger schrieb:
> (und natürlich
> einem ordentlichen C-Buch)

Jepp, ein paar Stunden Tutorials reicht nicht, zumal falls man da nur 
zuschaut und einem die Augen zufallen.

Buch lesen und selbst probieren, von Anfang an.

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
Noch kein Account? Hier anmelden.