Bonjour,
Je cherche à parser une chaîne formatée contenant les symboles [ et ], mais je n'arrive pas à trouver l'expression régulière me permettant de lire "Tout sauf ]".
J'ai beau avoir lu (et compris) les tutoriels de Xavier Renault sur *scanf et de Nicolas Joseph sur les expressions régulières, rien n'y fait...
Exemple de chaîne à lire :
J'ai essayé le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Bonjour [ID 344536 daemon.warning] setsockop
Mais il y a visiblement un problème à la compilation (gcc 3.3.6 imposé, mais j'ai la même erreur avec gcc 3.4) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31
32
33
34
35 #include <stdio.h> #include <stdlib.h> #include <string.h> int main (int argc, char ** argv) { char str1[512]; char str2[512]; char str3[512]; int value; int ret_sscanf; /* Exemple de chaine à scanner : Bonjour [ID 344536 daemon.warning] setsockop */ ret_sscanf = sscanf (argv[1], "%s \[ID %d %[^\]]\] %s", str1, &value, str2, str3); if (ret_sscanf == 4) { printf ("sscanf successfully read 4 : [%s] [%d] [%s] [%s]\n", str1, value, str2, str3); } else { printf ("Failure. %d returned. [%s] read\n", ret_sscanf, argv[1]); } return EXIT_SUCCESS; }
Et de toute manière, l'exécution n'est pas correcte non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 > gcc -Wall -W -ansi test_sscanf.c test_sscanf.c:17:26: warning: unknown escape sequence '\]' test_sscanf.c:17:26: warning: unknown escape sequence '\]' test_sscanf.c: In function `main': test_sscanf.c:5: warning: unused parameter `argc'
Auriez-vous une solution qui permette de récupérer une chaine contenant tout sauf des crochets ?
Merci.
Partager