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
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.
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.
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
> 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.
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
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.
Habe in der Doku leider nichts gefunden. Werde mal mit HTSOFT kontakt aufnehmen. Gruss Tobias
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?
Ich habe es nun so programmiert wie Karl Heinz Buchegger beschrieben hat. Funktioniert sehr gut und einfach.
wie wärs mit good old basic ? left$ mid$ right$ oder kann das keiner von euch ?
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.