www.mikrocontroller.net

Forum: Compiler & IDEs veränderlichen String zerlegen?


Autor: Christoph G. (booty3009)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe mal eine Frage. Ich empfange mit dem yC vom Rechner einen 
String, der so aussieht 18:20:50. Der String kann aber auch so aussehen 
18:5:8.
Ich möchte jetzt den String zerlegen. Die 18 in eine Variable std, die 5 
oder 20 in die Variable min und die 8 oder 50 in die Variable sek 
speichern. Ich habe gelesen das, dass mit strlen usw gehen soll.
Der über RS232 wir zunächst in die Variable buffer gespeichert. Wie 
sieht der nächste Arbeitsschritt aus, wenn ich z.B die 5 oder 20 
heraustrennen will?

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich habe gelesen das, dass mit strlen usw gehen soll.

Na ja, in gewissem Sinne schon.
In string.h gibt es viele schöne Funktionen, die dir helfen können. Such 
dir die raus, die du benötigst:

http://www2.fh-fulda.de/~klingebiel/c-stdlib/string.htm

Oliver

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sscanf( string, "%d:%d:%d", &std, &min, &sek );


Peter

Autor: Christoph G. (booty3009)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Bei dieser Sache "sscanf( string, "%d:%d:%d", &std, &min, &sek );" 
bekomme ich beim compilieren 3 Warnungen. Ich glaube das liegt daran, 
dass ich std, min und sek in integer benötige. Wie mache ich das? Im 
Anhang habe ich mein Programm bereitgestellt.

Warnung beim compilieren:

avr-gcc.exe  -mmcu=atmega8535 -Wall -gdwarf-2 -O0 -MD -MP -MT 
uhr_komplett.o -MF dep/uhr_komplett.o.d  -c  ../uhr_komplett.c
../uhr_komplett.c: In function `main':
../uhr_komplett.c:197: warning: int format, different type arg (arg 3)
../uhr_komplett.c:197: warning: int format, different type arg (arg 4)
../uhr_komplett.c:197: warning: int format, different type arg (arg 5)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt derzeit in der avr-libc kein scanf-Format, mit dem man einen
8-bit-Wert zuweisen könnte.  Du müsstest also für das scanf drei
temporäre 16-bit-Variablen nehmen und deren Ergebnis dann an die
8-bit-Variablen zuweisen.

Autor: Christoph G. (booty3009)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie mache ich das?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deklariere std, min und sek als int, nicht als uchar.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.