sprintf frage

Gast #168267
Lesenswert?
• ▲
▼
bitte um hilfe
Mein Code:

#include <avr/io.h>
#include <stdio.h>

int main( void ) {
  char buflcd[3];
  float zahl;


  zahl = 2.55;
  sprintf(buflcd,"%f",zahl);


  }

warum funktioniert das programm so nicht.
wenn ich zahl als char deklariere dann geht es..

naja gut ich habe dann in buflcd meinen string drinnen..
aber wie gebe ich jetzt die acii werte nacheinander aus.??

mfg
Gast #168268
Lesenswert?
• ▲
▼
Hallo,

für die Zahl 2.55 ist buflcd[3] zu klein. Versuch es doch mal mit
char buflcd[20] oder grösser.

Wie du die Werte ausgeben kannst, hängt davon ab wohin.
Eventuell geht printf("%f", zahl); statt sprintf.

Ciao, Yagan
Gast #168270
Lesenswert?
• ▲
▼
wenn LCD_out("A") ok ist und nicht LCD_out('A')
und LCD_out("ABCDE") geht, kann die Funktion möglicherweisen einen
String ausgeben:

char lcdbuf[20];
sprintf(lcdbuf, "irgendetwas");
LCD_out(lcdbuf);

Falls LCD_out nur ein Zeichen ausgeben kann:

char lcdbuf[20];
char *string = lcdbuf;
sprintf(lcdbuf, "irgendetwas");
while (*string != 0)
   {
   LCD_out(*string++);
   }

Ciao, Yagan
Gast #168272
Lesenswert?
• ▲
▼
der zeiger auf den string wird um jeweils eine stelle weitergrückt...
die richtige erklärung für dein obiges problem:

2.55 als String sind mindestens 5 zeichen.

2 . 5 5 und \0

frei nach joda:

aber in ein buch schauen, grundlagen c, sich lohnen würde
Gast #168273
Lesenswert?
• ▲
▼
while {} ist in C ein Wiederholungskonstrukt, auch 'Schleife'
genannt.
In der while-Schleife werden die Zeichen einzeln aus dem String geholt
und ausgegeben.
string ist ein Zeiger (pointer), der zunächst auf den Anfang von lcdbuf
zeigt.
Mit *string kann man das aktuelle Zeichen ansprechen, string++ bedeutet
anschliessende Weiterschaltung des Zeigers auf das nächste Zeichen.
C-Strings werden immer durch ein Null-Zeichen abgeschlossen, wodurch
man das Ende des Strings erkennen kann. Deshalb die Abfrage *string !=
0, was bedeutet, dass die Schleife solange durchlaufen wird, wie das
aktuelle Zeichen ungleich Null ist.

Ciao, Yagan

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.