Integer aus einem String auslesen mittels sscanf

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
penthesilea
Beiträge: 147
Registriert: 19.02.2003 23:51:24
Wohnort: Ulm

Integer aus einem String auslesen mittels sscanf

Beitrag von penthesilea » 06.12.2003 15:41:42

Hallo,

habe da ein Problem in C. ich möchte aus einem String einen Integer mittels sscanf auslesen.
Das Problem ist der String sieht so aus:

Code: Alles auswählen

char string[] = {"Hallo Welt:8"};
und wenn ich nun

Code: Alles auswählen

sscanf(string,"%d",&variable);
anwende kommt da nix raus.
Kann man sscanf irgendwie sagen, dass der Integer nach dem Doppelpunkt kommt? Oder gibt es eine andere Funktionen die aus Strings irgendwie Integer macht wie zb in java parseInt(String s)?

Gruss penthesilea

Benutzeravatar
bitbieger
Beiträge: 179
Registriert: 23.10.2003 08:26:00
Kontaktdaten:

Beitrag von bitbieger » 06.12.2003 16:20:40

Hi,

wenn du weisst, das die Zahl direkt nach dem Doppelpunkt kommt, kannst du das auch ohne sscanf() machen.
sscanf() ist einer der besten Kandidaten für einen Buffer overflow...

Code: Alles auswählen

char* s = "Hallo Welt:8";
int iValue = -1;

// 1. Doppelpunkt von hinten suchen
char* pszVal = strrchr(s, ':');
if(pszVal)
{
    // Doppelpunkt überspringen
    pszVal++;

   // Wert lesen
   iValue = atoi(pszVal);
}
Generell ist die Verarbeitung von zeichenketten in C echt ätzend :)
Zu deiner eigentlichen Frage:

Code: Alles auswählen

sscanf(string, "Hallo Welt:%d", &variable)
könnte funktionieren...

hth,
bitbieger

Benutzeravatar
penthesilea
Beiträge: 147
Registriert: 19.02.2003 23:51:24
Wohnort: Ulm

Beitrag von penthesilea » 06.12.2003 17:46:35

Hallo,

danke für deine Hilfe habe es mit der Funktion atoi probiert und es funktioniert. Deinen Tipp für sscanf habe ich nicht ausprobiert, da ich in der Regel nicht weiss, was vor dem Doppelpunkt steht. Oder kann man in das sscanf eine Variable einbinden?

Ich hätte da noch eine allgemein Frage zu C. Gibt es irgendeine Möglichkeit durch die libs zu Browsen und zu schauen was für Funktionen es gibt wie bei Java?

Gruss penthesilea

Benutzeravatar
bitbieger
Beiträge: 179
Registriert: 23.10.2003 08:26:00
Kontaktdaten:

Beitrag von bitbieger » 06.12.2003 17:55:19

Hi,

ich denke, für die Funktionen in den Libs wirst du die Dokumentation zu Rate ziehen müssen.
Z.B.:

Code: Alles auswählen

info libc
Bei dem itoa() mit einem String "Hello2 World:8" fällst du auf die Nase... :)

cu,
bitbieger

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Beitrag von spiffi » 06.12.2003 17:56:21

penthesilea hat geschrieben:Gibt es irgendeine Möglichkeit durch die libs zu Browsen und zu schauen was für Funktionen es gibt wie bei Java?

Code: Alles auswählen

info libc

Benutzeravatar
bitbieger
Beiträge: 179
Registriert: 23.10.2003 08:26:00
Kontaktdaten:

Beitrag von bitbieger » 06.12.2003 17:59:03

hähä, schneller...

Antworten