Bonjour,
je me suis mis à l'ocaml en autodidacte après avoir fait un petit peu de C.
j'ai passé au bas mot tout l'après-midi à essayer de trouver ce qui clochait dans mon code ocaml suivant. Un peu d'aide ne serait pas de refus.
Le but de ce morceau de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 let rec main_def_argv ite_argv val_argv = print_endline ("Test de " ^ Sys.argv.(ite_argv) ^ " ."); if ite_argv > 0 then if (Sys.argv.(ite_argv).[0] == '"') && (Sys.argv.(ite_argv).[(String.length Sys.argv.(ite_argv)) -1]) == '"' then if val_argv == true then val_argv = false else (main_def_argv (ite_argv-1) true) else (main_def_argv (ite_argv-1) false) else if val_argv == true then val_argv = true else val_argv = false;; match (main_def_argv ((Array.length Sys.argv)-1) false) with | true -> print_endline "Arguments valides." | false -> print_endline "Arguments invalides. Arrêt du programme."; exit 42;;
l'utilisateur doit lancer le programme en console en envoyant au moins un argument entre "\" et \"" . Il peut envoyer n'importe quel autre argument du moment qu'il se plie à cette règle.
Ce code ne fonctionne pas. Par exemple, si je tape :
./main blabla
le programme considère les arguments envoyés comme valides, alors que l'argument n'a pas été entouré de "\" et \"".
Pourquoi ?
Ensuite, j'aimerais savoir s'il n'y a pas un moyen d'envoyer un argument en pouvant y mettre n'importe quoi : si je fais, par exemple, ./main "\"truc"machinchose\""
ça ne va pas, à cause du " entre truc et machinchose, j'aimerais faire en sorte qu'aucun argument ne risque de poser problème.
J'ai cherché pendant tout l'après-midi, là j'en ai ras-le-bol et je ne comprends pas ce qui cloche. La personne qui m'aidera aura droit à mes remerciements les plus sincères.
Merci d'avance.
Partager