string und mustererkennung
-
hi,
ich versuche eine zeichenkette innerhalb eines strings nach einem vorgegebenen muster zu erkennen.
z.b. string[] = "versionsnummer1 1.2.3.4 versionsnummer2 1.234"wobei alle zeichenketten nicht constant sind. ich kann also nicht mit strstr innerhalb dieser zeichenkette nach der versionsnummer suchen.
gibt es in c so eine art mustererkennung. ich dachte schon an die funktion sscanf, aber wie kann ich da im formatstring nach dem muster \d\.\d\d (<zahl><punkt><zahl><zahl>) suchen, was ja die zweite versionsnummer hervorbringen würde ???
cu...
-
// innerhalb einer while-schleife, welche eine binäre datei durchsucht ... char test[10]; if (sscanf(p, "%[0-9.A-Za-z]", test) != 0 ) { if ( (p[0] >= 0x30 && p[0] <= 0x39) && p[1] == '.' && (p[2] >= 0x30 && p[2] <= 0x39) ) printf("%s\n", test); } ...
was besseres ist mir nicht eingefallen, hat jemand noch ideen?
-
Such doch einfach jedes "Wort" einzeln raus (Wort soll hier ein String sein der von Leerzeichen eingegrenzt wird). Dann prüfst du für jedes "Wort" ob es nur aus Zahlen und Punkten besteht und dann hast du eine Versionsnummer. Wenn andere Zeichen vorkommen hast du eben keine.
MfG Jaschi
-
char deinstring[] = "bla bla bla 1.2.3.4 bla bla bla"; char *p = deinstring; char muster[] = "%d.%d.%d.%d"; int a,b,c,d; while (*p && (sscanf(p, muster, &a, &b, &c, &d) != 4)) ++p;
scannt den string ab, bis sscanf() alle 4 zahlen abgreifen konnte.
(ungetestet. wenns nicht geht, selber fixen)