Commande "system" en C

Résolu/Fermé
Yazou92 Messages postés 181 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 30 avril 2013 - 17 nov. 2009 à 10:00
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 17 nov. 2009 à 14:47
BOOOnnjjjOOuursss (je suis heureux aujourd'hui :D)

Je suis entrain de faire un programme en "C" qui permet d'ouvrir des fichiers "exe" au hasard.

Le problème c'est quand je met le chemin dans la commande "system ("C:\User\Admin\....\nfs.exe");"
le compilateur (Dev-C++) me dit que les commandes "\U-->\User" et "\A-->\Admin" ne les connais pas,
C'est normal, c mais moi je vais que ça soit utilisé en temps que chemin pas en temps que commande du langage C

Pouvais Vos M'aider SVP

Auuuu Reeevoiiirre

8 réponses

Le dinosaure facultatif
17 nov. 2009 à 10:11
Salut

je suis content que tu sois heureux !
tu n'en reliras que plus gaiement ton manuel
peut-être y verras-tu la nécessité de doubler l'anti-slash dans une chaine pour éviter de spécifier un caractère spécial ; peut-être auras-tu la chance de lire quelques bribes sur la conduite à tenir en cas de bug avéré du système : décomposition puis recomposition pas à pas jusqu'au déclenchement de l'erreur permettant de découvrir que le bug est dans le passage du manuel que j'ai pas pris le temps de lire...
2
Yazou92 Messages postés 181 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 30 avril 2013 16
17 nov. 2009 à 10:41
Salut :D

Merci pour ta réponse, et pas grave si t'a pas lu :D, ca me dérange pas ;)

++
0
Yazou92 Messages postés 181 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 30 avril 2013 16
17 nov. 2009 à 11:16
Salut vraimentnuleninfo,

Désoler je peux pas trop t'aider, parce que j'habite en suisse et nous on a pas auchan :P

DSl
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
17 nov. 2009 à 11:26
Le problème de système, c'est que tu passes les commande au shell, et ici c'est windows :-!
Si il y a des espaces, ou des caractère à la con, ça sera mal interprété par dos d'où plantage.
Il faut peut-être protégé tes chemins avec des guillemets :
system ("\"C:\User\Admin\....\nfs.exe\"");
ou utiliser start :
system ("start \"C:\User\Admin\....\nfs.exe\"");
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Surtout que system() est complètement prohibé sous Windows !
Il faut lire MSDN un minimum.
On utilise les apis Shell ou Kernel.
Amuse-toi à appeler system() sur un prog en environnement de Prod dans une banque et tu es viré dans la demi-heure...
0
Yazou92 Messages postés 181 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 30 avril 2013 16
17 nov. 2009 à 11:35
Salut Stephane

Je suis étudiant, je fais un apprentissage en informatique donc il faut que je teste des trucs, et puis j'ai rien compris a ton message (je suis encore en première année au cas ou).

Donc merci de ta réponse tout de même
0
Yazou92 Messages postés 181 Date d'inscription jeudi 15 janvier 2009 Statut Membre Dernière intervention 30 avril 2013 16
17 nov. 2009 à 11:45
Et encore un truc, je savais pas du tout que la commande "system()" est interdite sous Windows, mais maintenant oui, merci :)

Mais c'est que moi je doit faire dans le carde d'un exercice un programme qui permet de lancer des fichiers "exe" mais en "C" sans aucun autre programme à coter donc la commande "system()" a était pour moi le seul moyen afin de faire ça.

Donc si vous avez une autre solution je suis preneur :)

Merci a vous (tous)
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
17 nov. 2009 à 14:47
system() n'est pas interdit sous windows, sauf pour les intégristes de MS. Le terme le plus approprié serait "déconseiller".
regarde les fonction windows Shell et Kernel, je ne connais pas, mais si on te les conseil.
0