[C] - La commande system en C et l'insertion d'une char* !?

- La commande system en C et l'insertion d'une char* !? [C] - C - Programmation

Marsh Posté le 26-01-2007 à 10:58:38    

Bonjour.
 
J'ai un petit soucis dans ma programmation en C : je souhaiterais executer la commande sort sur un fichier dont le nom est créé dynamiquement. Je ne peux donc pas faire un system ("sort nomfic.txt" ); Je suis obligé de faire un truc du genre :  
system ("sort %s",var_nom_de_fichier);
 
Le probleme, c'est qu'a la compilation, la derniere commande évoquée me créé  
main.c: In function 'main':
main.c:129: error: too many arguments to function 'system'

 
 
Y-a-t'il un moyen de contourner ceci ? Ou suis-je contraint de mettre un nom fixe à mon fichier ?
 
Merci  
Flavio_dev


Message édité par flavio_dev le 26-01-2007 à 11:00:37
Reply

Marsh Posté le 26-01-2007 à 10:58:38   

Reply

Marsh Posté le 26-01-2007 à 11:00:27    

fais-le en deux étapes :

 

d'abord tu crées la chaine de caractères avec snprintf, ensuite tu exécutes la commande avec system()

 

EDIT: il vaut mieux utiliser snprintf pour les problèmes de débordement de buffer


Message édité par franceso le 26-01-2007 à 11:01:36

---------------
TriScale innov
Reply

Marsh Posté le 26-01-2007 à 11:15:21    

Tout d'abord merci pour cette réponse expres franceso ! Si je rentre un peu plus dans les détails, le nom de mon fichier est créé dans une méthode (l'initialisation) et est récupéré par adresse dans mon main  
 
char* s_chemin_fsortie_alpha;
char* s_chemin_fsortie_nboccur;
initialisation(argv[1], &s_chemin_fsortie_alpha, &s_chemin_fsortie_nboccur);

....
printf ("\n nom du fichier alpha : %s\n",s_chemin_fsortie_alpha);
...
//jusque la ca marche  
... //en gros ici le fichier est rempli...

system ("sort %s",s_chemin_fsortie_alpha);  // /!\
 
Voila. Je ne pense pas que ta technique du snprintf me sera utilie ici.. ou si, si tu as (ou si quelqu'un a...) un exemple, n'hésite pas !!!

Message cité 1 fois
Message édité par flavio_dev le 26-01-2007 à 11:17:12
Reply

Marsh Posté le 26-01-2007 à 11:24:18    

tu le fait expres ou quoi?!
 
1 system ne prend qu'un parametre que tu le veuille ou non.
2 va voir le lien que te propose franceso, c ton snprintf qui doit tout preparer
 
 

Reply

Marsh Posté le 26-01-2007 à 11:27:38    

A ce stade, je préconise l'un des deux choix suivant : apprendre les bases du langage (voire de la programmation), ou changer de métier.


Message édité par Elmoricq le 26-01-2007 à 11:27:58
Reply

Marsh Posté le 26-01-2007 à 11:29:16    

merci les gars =)

Reply

Marsh Posté le 26-01-2007 à 11:31:11    

[:k@nt]

Reply

Marsh Posté le 26-01-2007 à 11:50:19    

system c'est la mal TM

Reply

Marsh Posté le 01-02-2007 à 17:43:46    

Voici une autre solution sans utiliser snprintf :
char* triaz = malloc(sizeof(char) * (2000));
strcat (triaz,"sort temp_az > " );
strcat (triaz,s_chemin_fsortie_alpha);
system (triaz);

 
^^


Message édité par flavio_dev le 01-02-2007 à 17:44:36
Reply

Marsh Posté le 01-02-2007 à 17:53:37    

[:prozac]

Reply

Marsh Posté le 01-02-2007 à 17:53:37   

Reply

Marsh Posté le 01-02-2007 à 17:58:22    

flavio_dev a écrit :

system ("sort %s",s_chemin_fsortie_alpha);  // /!\


 
T'es bouche ou sourd de naissance ?
 

Code :
  1. char buffer[4096];
  2. sprintf(buffer,"sort %s",s_chemin_fsortie_alpha);
  3. system(buffer);


 
:o

Reply

Marsh Posté le 01-02-2007 à 18:03:14    

C'est pour un concours ? [:mlc]

Reply

Marsh Posté le 01-02-2007 à 19:43:04    

Elmoricq a écrit :

C'est pour un concours ? [:mlc]


Je ma trompé o_O

Reply

Sujets relatifs:

Leave a Replay

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