Sve@r | Jeandoe a écrit :
Bonjour,
Je souhaite faire un petit programme en C sous Unix.
Le but est que mon programme principal puisse lancer un exécutable qui provient d'une fonction qui reçoit un entier en paramètre. Voilà ce que j'ai fait :
fonction.c :
void fonction(int n)
{
int i,somme=0;
for(i=0;i<=n;i++)
{
somme+=i;
}
printf("La somme vaut : %d",somme);
}
programme principal :
int main()
{
printf("Sur quel entier voulez-vous effectuer le calcul?\n" );
scanf("%d",&n);
**
sleep(2000);
}
Mon problème est que je ne vois pas comment utiliser la commande exécution sur mon éxecutable tout en rentrant l'entier n en paramètre. Dois-je faire en commande unix un gcc fonction.c -o fonction puis en (**) faire un execlp? Ou alors faire en (**) un execlp("gcc","gcc","fonction.c","-o","fonction","NULL" )? mais le problème est que je ne vois pas où je peux mettre mon n Merci par avance.
|
Je dois avouer que tu as exposé ton problème avec une certaine aisance et une très grande clarté . Donc voilà ce que j'ai compris...
Tu voudrais écrire un programme n° 1 qui fait saisir un nombre... et tu voudrais appeler un programme n° 2 en lui passant ce nombre en paramètre
Il te faut d'abord écrire le programme n° 2 recevant un paramètre
int main (int argc, argv[])
{
int nb;
// Le paramètre reçu se trouve stocké dans "argv[1]" sous forme de chaîne
// Il te faut le convertir en nombre
nb=strtol(argv[1], NULL, 10);
// Tu peux maintenant utiliser "nb" comme un nombre et le traiter comme tu veux
...
} |
Maintenant, tu peux écrire le programme n° 1 faisant saisir un nombre et le passant au programme n° 2
int main ()
{
char saisie[100]; // Zone de saisie
// Saisie d'un nombre dans la zone
scanf(...);
// Appel du programme n° 2 en lui passant la valeur saisie
execl("chemin/nom_programme 2", "nom_programme 2", saisie, NULL);
} |
Tu compiles tes 2 programmes en y rajouant les headers qui vont bien ("man strtol" et "man execl" pour ça)... et tu lances le n° 1 Message édité par Sve@r le 27-11-2005 à 21:01:14 ---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
|