zahlen aus string ermitteln

Gast #356992
Lesenswert?
• ▲
▼
Hallo

Ich habe folgenden commando string den ich auswerten möchte:

char command = "C1_3_15444_54231"

Die folgenden variablen sollten die folgenden werte enthalten:
char com[2] = C1
int val_1 = 3
int val_2 = 15444
int val_3 = 54321

Das ganze wollte ich mit sscanf machen. Leider unterstütz der compiler
(dsPIC HI-TECH) diesen Befehl nicht.

Was für andere möglichkeiten habe ich?

Besten Dank für euren input.

Gruss Tobias
Gast #356993
Lesenswert?
• ▲
▼
Wie sieht's mit strtok aus? Damit könntest du den String zunächst
unterteilen und mit atoi die drei letzten Teile in Integers
konvertieren.
Allerdings muß man daran denken, daß strtok den Orignalstring
verändert.
#356994
Lesenswert?
• ▲
▼
Andere Möglichkeit:
Ich geh auch davon aus, dass du den Originalstring
verändern darfst. Und: Ich geh davon aus, dass die
Formatierung konstant ist.

char command[] = "C1_3_15444_54231"

  com[0] = command[0];
  com[1] = command[1];

  val1 = command[3] - '0'
  command[10] = '\0';
  val_2 = atoi( &command[5] );
  val_3 = atoi( command + 11 );


Bist du sicher, dass dein Compiler keinen sscanf hat.
Ist eigentlich ziemlich unüblich, denn wenn der Unterbau
da ist, ist ein sscanf eigentlich eine leichte Übung.
Gast #356995
Lesenswert?
• ▲
▼
Hallo

Ich bekomme auf jeden fall immer eine fehler meldung beim kompilieren.
die sscanf funktion habe ich aber vorher mit borland getested. die
sollte nicht fehlerhaft sein.

aber ich verusche das jetzt mal mit deinem vorschlag.

danke tobias
Gast #356996
Lesenswert?
• ▲
▼
> Ich bekomme auf jeden fall immer eine fehler meldung beim
> kompilieren.

Meinst du damit, daß der Compiler einfach nur "Fehler" ausgibt und
sonst gar nichts, oder hast du nur vergessen, den Inhalt der Meldung
ins Posting zu kopieren? Bedenke: Wenn du die Fehlermeldung nicht
verstehst, heißt das noch lange nicht, daß ihr Inhalt unbedeutend ist.
Es ist auch sinnvoll, den Code zu posten, der den Fehler produziert
hat.
Gast #356997
Lesenswert?
• ▲
▼
Hallo

Hier wie ich es testweise programmiert habe:

int val_1, val_2,line;
char com[3];
char command[] = "C1_3_12345_3322";

sscanf(command, "%2s_%d_%d_%d",com,&line,&val_1,&val_2 );

Hier die Fehlermeldung des dsPIC-HI-TECH compiler:

Error[500]  0 : undefined symbols:
  _putch
(C:\Programme\Microchip\HTSOFT\dsPICC_9.50\lib\dspicc-sc.lib:
cgets.obj)_getche
(C:\Programme\Microchip\HTSOFT\dsPICC_9.50\lib\dspicc-sc.lib:
cgets.obj)


Auf jeden Fall hatte ich schon einmal das problem das ansi standart
funktionen bei der aktuellen version des compiler gefehlt haben.
Da ich mit dieser Fehlermeldung nichts anfangen konnte, bin ich davon
ausgegangen das die funktoin sscanf noch nicht untestützt wird.

Gruss Tobias
#356998
Lesenswert?
• ▲
▼
Das sind keine Fehlermeldungen vom Compiler sondern
die sind vom Linker.
Da fehlt eine Bibliothek oder HTSOFT hat tatsächlich irgendwelche
Funktionen nicht implementiert (kann ich mir aber nicht
vorstellen). Also: Doku lesen welche Bibliothek noch angegeben
werden muss.
Gast #357001
Lesenswert?
• ▲
▼
Wennn der String konstant ist bzw. durch "_" getrennte Informationen
enthält, kann man sich daoch auch ziemlich einfach eine Funktion
basteln, die diese Informationen aus dem String gewinnt:
Man kann durch einfach Schleifen und char-Operationen eine
Filterfunktion erzeugen.
sscanf() bestimmt eine Menge, aber braucht man das in dem Fall
wirklich?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren