Caractere espace dans un path en C

Fermé
ben - 5 juin 2003 à 11:19
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 - 5 oct. 2008 à 17:07
Bonjour a tous,
je cherche à savoir command rendre le caractere espace interpretable pour un path

ex: system("C:\\Program Files\\IP Gateway\\IPGateway.exe");

l'espace entre Program et files me pose un problème car il coupe la chaine dès qu'il trouve l'espace

merci

ben

4 réponses

bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
5 oct. 2008 à 02:08
pour qu'une chaîne de caractère contenant un espace ne soit pas interprété comme deux paramètres il suffit de mettre des guillemets l'encadrant (bien évidemment comme tu passes par une chaine de caractères, ces guillemets doivent être des \").

par exemple si tu veux exécuter ton .exe avec cette commande system() dans ton code C :

system("CALL \"C:\\Program Files\\IP Gateway\\IPGateway.exe\"");

et si tu veux lui fournir des paramètres à l'appel de ton programme c'est pareil

system("CALL \"C:\\Program Files\\IP Gateway\\IPGateway.exe\" 12 \"13 14\" 15"); => ça appel ton programme avec les paramètres "12", "13 14" et "15"

edit : je viens de voir qu'HenriCarine a déterré ce sujet de 2003 lol :p mais ma réponse pourra toujours être utile peut-être à qqu'un qui tomberait dessus
2
Utilisateur anonyme
5 juin 2003 à 12:05
Si t'es sous win, alors essaie en mettant les noms DOS (8 caracteres + 3 pour l'extension). Sous linux, met "\" devant ton espace.
Pour connaitre le nom dos de ton chemin, mets toi sous fenetre DOS et trace ta route!

Fat_Cartman,
Parce que je le vaux bien... 
0
Il faut remplacer ton " " par "%20".
0
Je suis un déterreur dans l'âme.

Bizu, je n'ai pas de compilateur C sous la main mais peux-tu vérifier si ma méthode fonctionne ou non. Pour moi oui car %20 fait appel au code ascii en héxa de " " (de même %27 doit donner une ') mais maintenant j'ai un doute, comment le C s'en sort ?
0
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
5 oct. 2008 à 17:07
non %20 ne passe pas ... à la limite un caractère '\x20' peut-être, mais j'ai la flemme de tester :p
Il ne s'agit pas de langage C mais de langage C faisant appel à un autre langage (celui des commandes batch).

edit : je viens de réfléchir, même si le \x20 ou n'importe quoi d'autre faisant un espace ça ne peut PAS passer, puisque le problème n'est pas la représentation de l'espace, mais l'interprétation de l'espace qui fait suite ! et pour ça il n'y a pas d'autre moyen (je crois) que de mettre des guillemets pour "empaqueter" la chaîne de caractères
-1