Bonjour, j’ai un probleme assez compliqué a traité en C, je recois cette chaine de caractere :
1 | "command1";"sleep 30; command2 -a ; command3";"command4="MyTest"" |
je voudrais la séparer et avoir en sortie :
1 2 3 | command1 sleep 30; command2 -a ; command3 command4="MyTest" |
j’ai essayé de faire avec la fonction strtok mais j’ai pas le résultat voule, je ne pense pas que strtok soit une bonne idée dans ce contexte, voila ce que j’ai :
1 2 3 4 5 6 7 | char mystring[1024]="\"command1\";\"sleep 30; command2 -a ; command3\";\"command4=\"MyTest\"\""; token = strtok(mystring, "\";\""); while( token != NULL ) { error(token); token = strtok(NULL, s); } |
et le résultat :
1 2 3 4 5 | command1 "sleep 30 command2 -a command3" "command4="MyTest"" |
du coup es ce que je m’y prend mal avec strtok, ou bien c’est impossible/tres compliqué avec cette fonction ? dans ce cas auriez vous une autre solution, comme par exemple une fonction "regex", pour analyser des expressions réguliere comme on peut l’avoir en C++, python…
dans mon cas, il faut considerer mla chaine de caractere comme un tableau et chaque élèvement est mis entre double quote et est séparer par des ";"
"element1";"element2"…etc.
sauf que y’a les cas batard que je dois prendre en compte : "element01;element02";"elemeent1" "element1="monelement1"";"element2"
Comme je le vois, il suffit de supprimer le 1er et le dernnier caractere qui sont des double quote, puis de séparer mes élements des uqe je rencontre un double quote, point virgule, double quote donc ceci : ";"