[ C / Unix ] Séparation commande arguments dans une chaîne.

Séparation commande arguments dans une chaîne. [ C / Unix ] - Programmation

Marsh Posté le 21-12-2001 à 13:25:22    

Bonjour,  
j' aimerais savoir comment obtenir à partir d' une chaîne du genre "commande arguments",2 chaînes "commande" et "arguments". Je m' explique:
le programme reçoit la chaine  
"toto -arg1 -arg2 -arg3"
et je veut qu' il m' affiche
 
commande: toto
arguments: -arg1 -arg2 -arg3
 
où  "toto" et "-arg1 -arg2 -arg3" sont stockés dans 2 chaînes différentes.
Merci.

Reply

Marsh Posté le 21-12-2001 à 13:25:22   

Reply

Marsh Posté le 21-12-2001 à 13:29:49    

int main(int argc, char **argv)
{
  int i;
  char mes_args[MAX]="";
 
  for ( i=1 ; i<argc ; i++ )
    {
      strcat(mes_args, " " );
      strcat(mes_args, argv[i]);
    }
 
  printf("commande : %s\n", argv[0]);
  printf("mes arguments : %s\n", mes_args);
 
  return 0;
}
 
Juste bidouiller pour éviter d'avoir l'espace en début de mes_args, mais je te laisse faire...
 
Mogi.

Reply

Marsh Posté le 21-12-2001 à 17:36:57    

un petit complément au code de mogi histoire de faire ça en dynamique ça fait plus propre:
 
char *mes_args;
int taille=0;
int i=1;
 
while(argv[i]!=NULL)
 taille+=strlen(argv[i]);
 
 
mes_args=new char[taille+1]; //0 de fin de chaine
 
A faire évidemment avant la boucle for de mogi

Reply

Marsh Posté le 21-12-2001 à 18:16:15    

elle se trouve dans quel fichier header la fonction new ???

Reply

Marsh Posté le 21-12-2001 à 18:37:43    

new c'est du C++, en C ca donne :
mes_args = (char *) malloc ((taille+1) * sizeof(char));


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed