Zeltron2048 | zouzouille a écrit :
Quelqu'un pourrait il m'aider,le sujet est simplemais j'y arrive pas :-).
En faite je creer un pgm où je lui fourni des parametre et en retour il doit me donner le numero ou ce trouve le parametre.
Exemple: main 1 Path,j'aimerai qu'il me retourne la ligne(normalement c'est la 15 qui contient la variable d'environnement Path). Pour pouvoir executé le pgm, il faut utilisé command et tapé aller dans le repertoire du debug du pgm et tapé le nom du pgm suivi de 1 et du mot Path.
Pourriez vous me dire pourquoi quand je compare ARGV[2](C'est Path entrer en parametre), il ne le trouve pas dans ENVP.(contient toute les variable)Pour voir les variable taper" set "dans command.
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <string.h> int main(int argc ,char *argv[],char *envp[])
{
if (strcmp(argv[1],"1" )==0)
{
for(int x=0;x<20;x++)
{
if (strcmp(envp[x],argv[2])==0)
{
cout << "trouve" << endl;
}
else
{
cout << "impossible de trouver la valeur de path" << endl;
}
}
}
else {
cout << "Numero correspond pas(1 ou 2 ou 3)" << endl; }
return 0;
}
|
Salut Camarade programmeur,
Pas la peine d'employer la force brute mon ami.
Le problème vient tout simplement de ton test.
As-tu oublié ce que tout bon programmeur ne devrait pas oublier, surtout en C, ceci :
Ton argument en ligne de commande : Path ou PAth ou PATH (peu importe),
et l'entrée de la table des variables d'environnement :
PATH=c:\windows\system;c:\windows\system32;...
Or; si tu compares ton PATH passé en ligne de commande avec l'entrée de cette table,
la fonction strcmp(Adresse de ton argument,entrée de la table des variables d'environnement contenant 'PATH') ne te retournera jamais 0 ;
à moins que l'entrée de la table ne contienne que 'PATH'
et à condition que tu aies tout converti en majuscules ou tout en minuscules !
Stop aux if, aux boucles for, aux boucles while, etc...
Je t'ai donné des pistes, à toi de les explorer.
Mais de grâce, épargne-moi cette écriture alambiquée du langage C.
Ce langage, d'une efficacité redoutable lorque les programmes sont bien écrits et bien conçus, mérite mieux, mais beaucoup mieux que cela.
Zeltron2048. |