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
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
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
A voir également:
- Espace en c
- Espace insécable - Guide
- Espace de stockage gmail plein - Guide
- Espace stockage google - Guide
- Code ascii espace - Guide
- Espace insécable google doc - Forum Word
4 réponses
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
5 oct. 2008 à 02:08
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
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
Utilisateur anonyme
5 juin 2003 à 12:05
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...
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...
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 ?
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 ?
bizu53
Messages postés
1274
Date d'inscription
samedi 30 août 2008
Statut
Membre
Dernière intervention
21 juin 2015
860
5 oct. 2008 à 17:07
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
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