Hat jemand eine Idee, wie ich eine variable Anzahl von Integer-Werten in einen einzelnen String einfüge (dieser wird anschließend mittels SCI gesendet). Bei der Nutzung von sprintf kann man ja nur eine definierte Anzahl an Werten zum String hinzufügen. Diese Anzahl muss jedoch variabel gestaltet werden. Gibt es irgendwo eine fertige Routine hierfür? Danke schonmal
> Diese Anzahl muss jedoch variabel gestaltet werden.
Eine Möglichkeit bestünde darin, eine Funktion mit variabler
Argumentenliste (...) zu verwenden und über die in stdarg.h definierten
Funktionen va_start/va_end die Anzahl der Argumente zu bestimmen, daraus
dynamisch den Formatstring durch ausreichend häufiges zusammenfügen von
"%d " zu generieren. Der so erzeugte Formatstring wird dann vsprintf
zusammen mit der von va_start erzeugten Argumentenliste übergeben.
Nur: Wozu braucht man sowas?
Maik wrote: > Hat jemand eine Idee, wie ich eine variable Anzahl von Integer-Werten in > einen einzelnen String einfüge (dieser wird anschließend mittels SCI > gesendet). > Bei der Nutzung von sprintf kann man ja nur eine definierte Anzahl an > Werten zum String hinzufügen. Diese Anzahl muss jedoch variabel > gestaltet werden. > Gibt es irgendwo eine fertige Routine hierfür? itoa() macht dir die Konvertierung eines Wertes in einen ASCII String. Das ganze dann in einer Schleife und die Einzelteile mittels strcat zusammensetzen. http://www.mikrocontroller.net/articles/FAQ#itoa.28.29 http://www.mikrocontroller.net/articles/FAQ#Wie_funktioniert_String-Verarbeitung_in_C.3F
Oder aber natürlich: Du sparst dir das zusammensetzen eines kompletten Strings und bringst die Einzelteile nacheinander auf den Weg. So in etwa int Werte[20]; char Buffer[100]; .... for( i = 0; i < 20; ++i ) { itoa( Werte[i], Buffer, 10 ); TransmitString( Buffer ); if( i != 19 ) TransmitString( "," ); } ist die allereinfachste und resourcenschonendste Variante.
Danke Dir, das läuft----zwar mit sprintf--weil der compiler(iccarm) irgendwie itoa nicht kennt und noch irgendwie in einer Endlosschleife--:-( Aber ansonsten hat es mir viel geholfen. Gruß Maik
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.