Ik probeer een string op te delen in verschillende stukken, maar het wil nog niet helemaal lukken . . .
de vgl. string wordt meegegeven aan een programma
Nu wil ik de vgl. variabelen vullen met delen uit de string. Hier gebruik ik het vgl. voor (m.i. niet relevante delen weggelaten)
Is dit de juiste manier om zo'n string te parsen? Ik wil aan het einde in logmesg eigenlijk nog de hele string hebben, maar vgl. mij hakt strtok() er steeds stukjes vanaf . . .
de vgl. string wordt meegegeven aan een programma
code:
1
| Mar 19 19:14:30 hostname.com 34188: 22w4d: %ISDN-6-CONNECT: Interface BRI1/3:2 is now connected to 0123456789 0123456789 |
Nu wil ik de vgl. variabelen vullen met delen uit de string. Hier gebruik ik het vgl. voor (m.i. niet relevante delen weggelaten)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| char *loghost, *logprog, *logmesg,
*logup, *logevent, *logdialer, *loginterface;
while(fgets(buf, sizeof(buf), stdin))
{
if (strlen(buf) > 18)
{
loghost = strtok(buf + 16, " ");
logprog = strtok(NULL, ":");
logup = strtok(NULL, ": ");
logevent = strtok(NULL, ": ");
logmesg = strtok(NULL, "\0");
logdialer = strtok(strstr(logmesg, "to ") + 3, " ");
loginterface = strtok(strstr(logmesg, "face ") + 5, " ");
if (loghost && logprog && logmesg)
{
printf("%s\n", logprog);
printf("%s\n", logup);
printf("%s\n", logevent);
printf("%s\n", logdialer);
printf("%s\n", loginterface);
printf("%s\n", logmesg);
} |
Is dit de juiste manier om zo'n string te parsen? Ik wil aan het einde in logmesg eigenlijk nog de hele string hebben, maar vgl. mij hakt strtok() er steeds stukjes vanaf . . .