Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3581 connectés 

 


Dernière réponse
Sujet : [c/c++] Lancer un programme a partir d'un programme en C
thunderbird54 up

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
thunderbird54 up
thunderbird54 non je l'ai enleve,
pas de probleme a la compilation mais a l'execution
il me dit commande incorrecte et je me demandais si ce n'tait pas a cause du /0 a la fin de la chaine
 
system ne comprends peut etre pas ca?
antp le sprintf met un \0 a la fin donc c'est pas le probleme...
c'est quoi qui marche pas exactement ?
c'est pas par hasard à cause de ton int system(); ?
thunderbird54 j'ai reussi a tester avant de rentrer chez moi
et ca ne marche pas, tjs la meme erreur.
 
je me demande si ca n'est pas du aux caracteres \0 contenu a la fin de temp. Qu'en penses tu?
 
Ne devrait-on pas faire quelques arrangement dans la commande system(). quand je mets system(temp), que comprends le compilateur si temp = "net send backus08 texte"?
thunderbird54 je v regarder ca chez moi
des que je rentre je te dit si ca marche
 
Merci
antp tes scanf sont bizarres, &text[0] c un peu lourd. Et pour le message ca marche pas si y a des espaces avec le scanf :
 

Code :
  1.  void main(void)
  2.  {
  3.     int nbfois,i,touche;
  4.     char lettre;
  5.     char temp[150],ordi[10],texte[140];
  6.     int system(); /* je le laisserais pas, mais bon... */
  7.     printf("\n Sur quel ordinateur voulez vous que le message s'affiche?" );
  8.     scanf("%s",ordi);
  9.     fflush(stdin);
  10.     printf("\n Combien de fois voulez vous lancer net send?" );
  11.     scanf("%d",&nbfois);
  12.     fflush(stdin);
  13.     printf("\nQue voulez vous qu'affiche net send?" );
  14.      fgets(texte, sizeof(texte), stdin);
  15.     fflush(stdin);
  16.      sprintf(temp, "net send %s %s", ordi, texte);
  17.     printf("\n%s \n",temp);
  18.     for(i=0;i<nbfois;i++)
  19.     {
  20.        system(temp);
  21.     }
  22.  
  23.     getch();
  24.  }

thunderbird54 alors pour scanf je savais pas, peut tu expliciter davantage la fonction donc tu me parles
 
pour la declaration, eh bas c un truc que g trouve comme ca!
avant ca ne marchait pas et maintenant que j'ai rajoute la ligne et bien ca marche!
thunderbird54 j'ai fait une nouvelle version
qui utuilise s au lieu de c
hd c pour short int, donc comme j'ai mis int c donc d que je dois utiliser, mais ca ne change pas grand chose
 
nouvelle version qui devrait marcher mais qui ne marche pas, je ne c pas pourquoi. Alors docteur? pas d'erreur a la compilation mais une erreur lors de l'execution : commande incorrecte
 
   void main(void)
   {
      int nbfois,i,touche;
      char lettre;
      char temp[150]="net send ",ordi[10],texte[140];
      int system();
 
      printf("\n Sur quel ordinateur voulez vous que le message s'affiche?" );
      scanf("%s",&ordi[0]);
      fflush(stdin);
 
      printf("\n Combien de fois voulez vous lancer net send?" );
      scanf("%d",&nbfois);
      fflush(stdin);
 
      printf("\nQue voulez vous qu'affiche net send?" );
      scanf("%s",&texte[0]);;
      fflush(stdin);
   
      strcat(temp,ordi);
      strcat(temp," " );
    strcat(temp,texte);
      printf("\n%s \n",temp);
 
      for(i=0;i<nbfois;i++)
      {
         system(temp);
      }
   
      getch();
   }
antp le %hd et le %c sont très bizarre.
c'est quoi le h ?
et le %c ça marche ? c'est pas %s normalement ?
et tu devrais utiliser fgets(texte, sizeof(texte), stdin) plutôt que scanf pour le message, car scanf s'arrête aux espaces... (à moins qu'il ne le fasse pas avec le %c mais je croyais que c'était pour 1 seul caractère %c).
et pourquoi faire une déclaration de "int system();" ?

 

[edtdd]--Message édité par antp--[/edtdd]

thunderbird54 salut les gars voici l'ebauche du prgm
je c pas gerer les chaine de caractere aidez moi
Merci
 
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
 
 
   void main(void)
   {
      int nbfois,i,touche;
      char lettre;
      char temp[150]="net send backus08 texte",ordi,texte;
      int system();
 
      printf("Sur quel ordinateur voulez vous que le message s'affcihe?" );
      scanf("%c",&ordi);
   
      printf("Combien de fois voulez vous lancer net send?" );
      scanf("%hd",&nbfois);
 
      printf("\n Que voulez vous qu'affiche net send?" );
      scanf("%c",&texte);
   
   
 
   
      for(i=0;i<nbfois;i++)
      {
         system(temp);
      }
 
      getch();
   }
[SDF]Poire

thunderbird54 a écrit a écrit :

Alors je v clarifier les choses:
en gros je suis sous windows2000 mais je programme en mode console donc ce sera un prog dos
je suppose que vous connaissez la commande (dos) de w2k
net send [nom ordi] ["texte"]
 
alors je veux faire un prog qui me permette  :
1 : lancer net send
2 : me permette de specifier le texte et le nombre de fois que je veux lancer la commande
 
Merci
 
alors? system ou shell?  




G fait ton truc avec net send....
Si t'as pas trouvé contact moi par mail ou sur ICQ.....
 
(C pas bien de vouloir flooder C camarades  :non:   :D  :D )

 

[edtdd]--Message édité par [SDF]Poire--[/edtdd]

antp plutot que printf il vaut mieux utiliser perror:

Code :
  1. perror('Lancement du truc :');


affichera un truc du genre:

Code :
  1. Lancement du truc: File not found

Fork Par exemple, pour lancer le programme TOTO.EXE, tu écris
 
void main(void)
{
...
err = system( "TOTO.EXE" );
if(err==-1)
   printf("Erreur" );
...
}
antp

Citation :

Code :
  1. #include <stdlib.h>
  2. int system(const char *command);


 
Issues an operating system command.
 
system invokes the operating system command processor to execute an operating system command, batch file, or other program named by the string command, from inside an executing C program.
 
To be located and executed, the program must be in the current directory or in one of the directories listed in the PATH string in the environment.
 
The COMSPEC environment variable is used to find the command processor program file, so that file need not be in the current directory.
 
Return Value
 
If command is a NULL pointer, system returns nonzero if a command processor is available.
 
If command is not a NULL pointer, system returns 0 if the command processor was successfully started.
 
If an error occurred, a -1 is returned and errno is set to one of the following:
 
ENOENT Path or file function not found
ENOEXEC Exec format error
ENOMEM Not enough memory

thunderbird54 c dans quel librairie (conio,stdio,...???)
 
et c quoi la syntaxe
Fork system()
thunderbird54 je ne c pour l'instant programmer que des prog dos
donc tous ce qui est bouton, api32, gui de windows, je ne c pas utiliser.
 
Alors quelle fonction de quelle librairie dois je utiliser?
Rebel Pourquoi tu fais pas tout simplement une interface GUI sous Windows avec lorsque tu cliques sur un bouton, un appel à Net send ???
thunderbird54 100% dos
antp tu veux faire un programme DOS ou un programme Console ?
si tu fais un programme Windows Console ça a le look d'un programme DOS, mais tu peux utiliser les fonctions de l'API Windows...
LetoII Si c sous 2000 cherche du côté de la fonction spawn.
thunderbird54 Alors je v clarifier les choses:
en gros je suis sous windows2000 mais je programme en mode console donc ce sera un prog dos
je suppose que vous connaissez la commande (dos) de w2k
net send [nom ordi] ["texte"]
 
alors je veux faire un prog qui me permette  :
1 : lancer net send
2 : me permette de specifier le texte et le nombre de fois que je veux lancer la commande
 
Merci
 
alors? system ou shell?
Carbon_14 Sous DOS, c'est bien system, de mémoire (:)).
C'est pas précisé, d'où le flou. :D
LetoII si c sous dos c pas la peine de se casser la tête c la commande system il me semble
juju_le_barbare

CARBON_14 a écrit a écrit :

Pour passer des paramètres, il suffit de fabriquer la chaîne qui sera concaténée à la commande.
Si on veut lancer TOTO.EXE avec les paramètres dudu.bid -c +h, on fabrique la chaîne "TOTO.EXE dudu.bid -c +h" qu'on passe à ShellExecute.
Je sais pas si le post du même sujet (y a qq mois) est trouvable par "recherche". On peut attendre que le prog soit terminé, ou continuer, ...  




 
Mais il veut faire un soft sous DOS, donc l'API *Windows* ShellExecute ne marche pas, non ?

Carbon_14 Pour passer des paramètres, il suffit de fabriquer la chaîne qui sera concaténée à la commande.
Si on veut lancer TOTO.EXE avec les paramètres dudu.bid -c +h, on fabrique la chaîne "TOTO.EXE dudu.bid -c +h" qu'on passe à ShellExecute.
Je sais pas si le post du même sujet (y a qq mois) est trouvable par "recherche". On peut attendre que le prog soit terminé, ou continuer, ...
godbout faut aller voir dans le msdn  
 
http://msdn.microsoft.com
 
y a system, execl ou des trucs comme ca je crois
flo850 si le nom du prog et les arg sont constant , syste doit marcher.
thunderbird54 je suis plutot c
comment aller voir shellexecute et createprocess
 
je precise que le prgm que je veux lancer est un prgm dos et que j'aimerais lui passer des parametre
flo850 la commande system est pas mal .
tu es sous windows?
sinon sous linux , exec est tres pratique
godbout va voir dans shellExecute ou CreateProcess
thunderbird54 Lancer un programme a partir d'un programme en C
comment faut-il faire?
 
Merci

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)