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

  FORUM HardWare.fr
  Programmation
  C++

  ARGV,ARGC, ENVP--->>>> big prob

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ARGV,ARGC, ENVP--->>>> big prob

n°510278
zouzouille
Posté le 08-09-2003 à 17:21:00  profilanswer
 

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;
}

mood
Publicité
Posté le 08-09-2003 à 17:21:00  profilanswer
 

n°510283
chrisbk
-
Posté le 08-09-2003 à 17:23:05  profilanswer
 

Code :
  1. for(int x=0;x<20;x++)
  2.   {
  3.    if (strcmp(envp[x],argv[2])==0)
  4.    {
  5.     cout << "trouve" << endl;
  6.    }
  7.    else
  8.    {
  9.     cout << "impossible de trouver la valeur de path" << endl;
  10.    }
  11.   }


 
ca c idiot ca, tu affiches un message d'erreur avant meme d'avoir essayé toutes les possibilités

n°510285
zouzouille
Posté le 08-09-2003 à 17:26:50  profilanswer
 

sa fonctione tjr pas.IL m'affiche 20 x  
 
 
"impossible de trouver la valeur de path" << endl;

n°510306
chrisbk
-
Posté le 08-09-2003 à 17:39:10  profilanswer
 

tu sais que strcmp fait attention a la casse ?

n°510316
VisualC++
J'va y penser ...
Posté le 08-09-2003 à 17:45:28  profilanswer
 

Code :
  1. int main(int argc ,char *argv[],char *envp[])
  2. {
  3. if (argc < 2)
  4.  return -1;
  5. if (strncmp(argv[1], "1", 1) == 0) {
  6.  bool bFound = false;
  7.  int i = 0;
  8.  while (envp[i] != NULL) {
  9.   if (strncmp(envp[i], argv[2], strlen(argv[2])) ==0 ) {
  10.    cout << argv[2] << " = \"" << envp[i] << "\"" << endl;
  11.    bFound = true;
  12.   }
  13.   i++;
  14.  }
  15.  if (bFound == false) {
  16.   cout << "impossible de trouver la valeur de path" << endl;
  17.  }
  18. }
  19. else {
  20.  cout << "Numero correspond pas(1 ou 2 ou 3)" << endl; 
  21. }
  22. return 0;
  23. }


 
Avec un tolower ou upper ca serait bien aussi mais bon, et manque des cas d'erreur/init.

n°510335
zouzouille
Posté le 08-09-2003 à 18:03:15  profilanswer
 

merci pour ton aide. Il affiche toujour qu'il trouve rien mais je vais chercher alors d'ou poourrait kan meme venir ce prob

n°510337
zouzouille
Posté le 08-09-2003 à 18:03:57  profilanswer
 

C:\labo1\Debug>main 1 Path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path
impossible de trouver la valeur de path

n°510343
VisualC++
J'va y penser ...
Posté le 08-09-2003 à 18:09:54  profilanswer
 

Ben euh  :??: le bout de code semble marcher, vient de tester sur 76 var ds Path sous Win et Solaris ds un soft la pour voir, juste a mettre le nom exact avec la case de la var d'env.
 
Enfin comme chrish ou moi l avons marqué, mieux vaudrait faire ca en version case insensitive


Message édité par VisualC++ le 08-09-2003 à 18:10:42
n°510346
chrisbk
-
Posté le 08-09-2003 à 18:13:10  profilanswer
 

VisualC++ a écrit :

Ben euh  :??: le bout de code semble marcher, vient de tester sur 76 var ds Path sous Win et Solaris ds un soft la pour voir, juste a mettre le nom exact avec la case de la var d'env.
 
Enfin comme chrish ou moi l avons marqué, mieux vaudrait faire ca en version case insensitive


chrish ?
mais qui c'est cet ursupateur ? :O

n°510347
VisualC++
J'va y penser ...
Posté le 08-09-2003 à 18:13:43  profilanswer
 

oups desole :jap:

mood
Publicité
Posté le 08-09-2003 à 18:13:43  profilanswer
 

n°510353
zouzouille
Posté le 08-09-2003 à 18:16:59  profilanswer
 

Ok sa fonctionne merci du coup de main.

n°510367
Taz
bisounours-codeur
Posté le 08-09-2003 à 18:36:27  profilanswer
 

vous serez gentil de faire du C++ avec les std::string et de faire gaffe aux bornes (s'arreter quand truc[x]==NULL)

n°2154334
Zeltron204​8
Posté le 26-08-2012 à 20:47:54  profilanswer
 

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.

n°2154342
Terminapor
I'll see you rise.
Posté le 27-08-2012 à 02:43:14  profilanswer
 

Ha, t'es bien gentil mais au bout de 9 ans il a du laisser tomber :o


---------------
Perhaps you don't deserve to breathe

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  ARGV,ARGC, ENVP--->>>> big prob

 

Sujets relatifs
[JAVA] prob de compréhension pour L'instruction continue !!Lib GD et png, prob de couleurs
Prob de Frameworkprob graphique
Prob important ! Mon code ne s'exécute plus !Frames - Prob clique page "Précédente" et "Suivante"
Comment recupere t on la liste des processus sous windows (autre prob)prob upload champ dans BD à partir d'un formulaire
prob: getimagesize() et chaîne de caractèreProb avec BDD
Plus de sujets relatifs à : ARGV,ARGC, ENVP--->>>> big prob


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR