INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
sprintf formatiert völlig falsch !
12.12.2014, 13:17
Beitrag #9
RE: sprintf formatiert völlig falsch !
(12.12.2014 12:57)HaWe schrieb:  Und in unserer Referenz steht ja auch NIRGENDS was von %ld, oder habe ich was übersehen?
Ja.
Weiter unten ist eine Tabelle, bei der der Zusammenhang mit den "specifiers" und "length" beschrieben wird. Da steht bei "d" ohne length kanz klar "int" und mit length "l" "long int".
Wenn Du auf einer 32-Bit Maschine bist, dann funktioniert %d warscheinlich auch für 16 oder 8 Bit ints, aber versuch mal long long auf einer 32-Bit Maschine.
Schau Dir mal das hier an: http://www.cplusplus.com/doc/tutorial/variables/. Unten bei "Fundamental data types" steht z.B. bei "int" "Not smaller than short. At least 16 bits.". D.h. es darf ruhig auch mehr sein. Die absolute Länge ist nicht definiert. Das ist C(++) und nicht Arduino! Bei ANSI-C ist es dasselbe, aber das kannst Du Dir selbst raussuchen.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2014, 17:41
Beitrag #10
RE: sprintf formatiert völlig falsch !
ooops! Asche auf mein Haupt! Blush

ich hatte das l als Platzhalter für Zahlen verstanden (wie "%8d" für l=8),
das auf int32_t anzuwenden, wäre ich nie gekommen.
Dass allerdings C++ andere Standards hat als C ist mir auch neu.

Jetzt ist mir auch klar, wieso wschl der Code mit 32bit ARM Cortex funktioniert hat aber nicht mit AVR Mega, trotz identischer IDE.

Nuja, peinlich, aber ich gestehe meinen Fehler ein Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2014, 18:19
Beitrag #11
RE: sprintf formatiert völlig falsch !
(12.12.2014 17:41)HaWe schrieb:  Dass allerdings C++ andere Standards hat als C ist mir auch neu.
Hat es nicht, lies Dir nochmal meine letzte Nachricht durch. Da habe ich geschrieben, dass es bei Ansi-C genauso ist.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2014, 20:41
Beitrag #12
RE: sprintf formatiert völlig falsch !
ach so herum meintest du es, ich dachte: genauso wie bei Arduino.
Verstehe aber sowieso nicht die ganzen Arduino-Besonderheiten, schließlich verwenden die doch auch C/C++ mit einem gpp-Compiler in der IDE, oder nicht?
Aber ist auch egal, muss man sich halt durchwurschteln.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2014, 20:44
Beitrag #13
RE: sprintf formatiert völlig falsch !
Welche Besonderheiten? Ist doch alles so wie sonst in C++ auch. Was ist denn anders?
Ok, die libc ist vielleicht ein bisschen abgespeckt, aber was sonst noch?
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2014, 21:43 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2014 21:49 von HaWe.)
Beitrag #14
RE: sprintf formatiert völlig falsch !
Arduino-Besonderheiten, die gewöhnungsbedürftig sind:

was C angeht:
v.a. dass ich keine stdio-Befehle habe v.a. zum schreiben/lesen auf Flash oder auch zum Schreiben auf ein Display als stdout,
dass es auch für PS2-Keyboards an Dpins keine richtigen Tastaturtreiber gibt mit Sonderzeichen und Ländercodes
dass serielle Zeichenausgabe mit Serial überhaupt nicht formatierbar ist,
"char" immer wie %c als Buchstaben formatiert werden,
"bytes" aber immer als %d als Zahl
und bei "unsigned char" gar keine %c Formatierung als Buchstaben möglich ist
das man keine Headerdateien und .c- (oder .ino-) Dateien auslagern und wieder #includen kann mit beliebigem relativem oder absolutem include-Pfad,
dass Bezeichner nicht die gleichen Namen tragen dürfen wie bereits vorhandene libs, egal ob man sie included hat oder nicht
dass libs included werden auch wenn man es nicht ausdrücklich so hinschreibt
dass libs geladen werden in die IDE und evtuelle Fehler beanstandet werden selbst wenn sie nie gebraucht werden
dass der C-Präprozessor im Code auch Fehler in Funktionen beanstandet, selbst wenn sie gar nicht aufgerufen werden (ein Warning würde reichen!) und deswegen sowieso herausoptimert werden sollten
dass beim Compilieren die Zeilen-Nummern der Fehler nicht stimmen, weil Funktionen immer künstlich/temoprär als forward-Deklarationen an den Abfang kopiert werden,

was ein paar Unvollkommenheiten angeht:
kein CR auf der Konsole (nur LF+CR),
man den Cursor keine Zeile höher setzen kann,
und dann das Float-Formatier-Problem, das erst gepatcht werden muss,

und dann zur Hardware:
das Chaos mit den Display-Libs
die Pin- und Timer-Inkompatibilitäten zwischen allen möglichen Boards (timer, pwms, Header).

zum Editor:
dass man keine selektive Such- und keine wirklich anpassungsfähige Ersetzen-Funktionen hat (ganzes Wort, keine Bestandteile)
dass man markierten Text nicht verschieben kann
dass die Zeilen nach oben springen, sobald man den Cursor nur auf eine der drei untersten Zeilen setzt

Insgesamt aber überwiegt ntl bei weitem das positive Bild: ARM-Programmieren ohne Eclipse - wo findet man das sonst... Smile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2014, 22:24
Beitrag #15
RE: sprintf formatiert völlig falsch !
Hi,

das was Du da beschreibst hat eigentlich mit der Sprache an sich nichts zu tun, sondern eher mit der Entwicklungsumgebung und den Libraries. Bei den Libraries bin ich um das meiste recht froh. Wenn das eine komplette (g)libc wäre, dann wäre der Speicher vom Uno schon voll bevor auch nur eine LED blinkt.
Auf die Idee, ein Keyboard an den Arduino anzuschließen bin ich noch nicht gekommen. Was soll denn das? Das ist ein Mikrocontroller und kein PC.
Wofür soll eine schön formatierte serielle Ausgabe gut sein? Das ist eh nur zum Debuggen sinnvoll. Wer gibt den bei einem Mikrocontroller "produktiv" was in den seriellen Monitor aus?
...und von wegen Eclipse als IDE: Ich verwende die Arduino IDE nur für Kleinkram. Ansonsten benutze ich Eclipse. Da hat man dann auch die Einschränkungen nicht, was die Verwendung von Libraries in Libraries angeht.
Meiner Meinung nach ist die Arduino-IDE nur ein Spielzeug, um Anfänger nicht gleich abzuschrecken. Eine Entwicklungsumgebung ist das nicht.
Die Sachen bezüglich der Hardware haben ganz und gar nichts mit "C vs. Arduino" zu tun.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.12.2014, 10:04 (Dieser Beitrag wurde zuletzt bearbeitet: 13.12.2014 19:34 von HaWe.)
Beitrag #16
RE: sprintf formatiert völlig falsch !
es ging um gewöhnungsbedürftige Arduino-Besonderheiten.

Bitte keine Diskussionen üner MCU oder Computer- für mich ist das eine das gleiche wie das andere von der Anwendung her, und ich programmiere auf Megas und Dues und NXTs (und gerne auch EV3s) dieselben Sachen- map+explore robots, neuronale Netze, Schachprogramme, Roboterarme.
Manchmal braucht man einfach ein User-Interface, und das geht wunderbar mit einem Keyboard, und das habe ich sogar schon gemacht, und die Arduino-Daten an einen NXT weitergereicht:
http://www.mindstormsforum.de/viewtopic....302#p65518
http://www.mindstormsforum.de/viewtopic....302#p65015

gar nicht so schwierig, pins 3+4, lib einbinden, fertig.
Nur ist die Lib wiedermal sehr inkonsistent, unvollständig und hat nichts mit üblichem C zu tun wie stdin. Das heißt: man kann einzelne Tastencodes lesen, aber keine richtige Tastatureingabe mit shift-, ctrl, alt- und Sonderzeichen wie äöüÄÖÜ und []}{ auf deutschem Keyboard und mit ASCII > 127 gehen auch nicht, und Funktionen wie strings einlesen inkl. Backspace muss man selber programmieren anstelle von std. C gets() oder getchar().

Man müsste nur für das Arduino C files wie stdio.h oder stdin oder math.h zur Verfügung stellen, die dann optional eingebunden werden können und jeder kann selber entscheiden, welche lib jetzt noch gebraucht wird und ob auch der Speicher dafür ausreicht oder nicht.

Auf mini-AVRs würde man dann das Minimalprogramm fahren, stdio.h könnte optional #included werden falls gewünscht. Damit wären Bibliotheken-Größen individuell fürs aktuelle Programm anpassbar.

Wer's braucht und Platz hat, schreibt halt oben rein
#include <stdio.h>
#include <stdlib.h>
#include <c_math.h>
wer's nicht braucht oder zuwenig Speicher hat, halt nicht - schon ist das Programm wieder kleiner.

So funktioniert normalerweise C, und das ist ja auch der Sketch-Basis-Compiler.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Probleme mit sprintf() und dtostrf() GMBU 11 802 22.06.2016 10:52
Letzter Beitrag: GMBU
  OLED Display anzeige von Logo falsch ! b3ta 0 333 23.01.2016 15:12
Letzter Beitrag: b3ta
  erledigt: atan2 rechnet falsch? HaWe 0 343 30.11.2015 17:29
Letzter Beitrag: HaWe
  [gelöst] was ist falsch bei Wire.onReceive()? HaWe 0 631 26.09.2015 16:58
Letzter Beitrag: HaWe
  String falsch verstanden? hougy 20 1.800 07.07.2015 14:53
Letzter Beitrag: HaWe
  sprintf() plus scanf() : ständig Fehler, warum? HaWe 15 1.819 28.02.2015 15:31
Letzter Beitrag: HaWe
  Funktion ähnlich variabel definieren wie sprintf HaWe 21 1.795 24.02.2015 11:12
Letzter Beitrag: HaWe
  Daten von File auf SD Card (formatiert) schreiben+lesen u.a.m. HaWe 19 3.649 16.02.2015 19:50
Letzter Beitrag: HaWe
  sprintf invalid operands of types sepp01 34 5.608 26.12.2014 08:38
Letzter Beitrag: aoLaopsa
  Switch Case, LEDs bleiben an, Bedingung aber falsch luto92 4 1.443 16.11.2014 16:52
Letzter Beitrag: luto92

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste