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
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
hmm ja aber wie kann ich z.b. meinen string in dem 255 steht auf meinem lcd ausgeben. zum ausgeben hab ich ein unterprogramm: z.b. LCD_out("A"); so kann ich ein "A" ausgeben.. mfg
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
danke.. funktionieren tut es.. bitte noch um eine erklärung was da genau gemacht wird.. while (*string != 0) { LCD_out(*string++); } danke
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
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
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.