Forum: Compiler & IDEs veränderlichen String zerlegen?


von Christoph G. (booty3009)


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?

von Oliver (Gast)


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

von Peter D. (peda)


Lesenswert?

1
sscanf( string, "%d:%d:%d", &std, &min, &sek );


Peter

von Christoph G. (booty3009)


Angehängte Dateien:

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)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Christoph G. (booty3009)


Lesenswert?

Wie mache ich das?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Deklariere std, min und sek als int, nicht als uchar.

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
Noch kein Account? Hier anmelden.