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

  FORUM HardWare.fr
  Programmation
  C

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°1507388
flavio_dev
Posté le 26-01-2007 à 10:58:38  profilanswer
 

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
mood
Publicité
Posté le 26-01-2007 à 10:58:38  profilanswer
 

n°1507389
franceso
Posté le 26-01-2007 à 11:00:27  profilanswer
 

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
n°1507393
flavio_dev
Posté le 26-01-2007 à 11:15:21  profilanswer
 

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
n°1507403
red factio​n
Posté le 26-01-2007 à 11:24:18  profilanswer
 

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
 
 

n°1507406
Elmoricq
Modérateur
Posté le 26-01-2007 à 11:27:38  profilanswer
 

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
n°1507407
flavio_dev
Posté le 26-01-2007 à 11:29:16  profilanswer
 

merci les gars =)

n°1507409
red factio​n
Posté le 26-01-2007 à 11:31:11  profilanswer
 

[:k@nt]

n°1507425
Taz
bisounours-codeur
Posté le 26-01-2007 à 11:50:19  profilanswer
 

system c'est la mal TM

n°1509735
flavio_dev
Posté le 01-02-2007 à 17:43:46  profilanswer
 

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
n°1509748
Elmoricq
Modérateur
Posté le 01-02-2007 à 17:53:37  profilanswer
 

[:prozac]

mood
Publicité
Posté le 01-02-2007 à 17:53:37  profilanswer
 

n°1509750
Joel F
Real men use unique_ptr
Posté le 01-02-2007 à 17:58:22  profilanswer
 

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

n°1509753
Elmoricq
Modérateur
Posté le 01-02-2007 à 18:03:14  profilanswer
 

C'est pour un concours ? [:mlc]

n°1509779
Joel F
Real men use unique_ptr
Posté le 01-02-2007 à 19:43:04  profilanswer
 

Elmoricq a écrit :

C'est pour un concours ? [:mlc]


Je ma trompé o_O


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

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

 

Sujets relatifs
Insertion de fonction deplacement... ( je sais pas comment faire.. )erreur de commande call sous windows 98
Programmer un system d'exploitation en C ? ou C++ ou ASM ? ou quoi ?Changement de format de date lors d'une insertion
Probleme avec la fonction system()[VBS] : insertion de vb dans du html
Enregistrer le résultat d'une commande[Batch - Win XP] Commande ECHO et "&"
[C] Des accolades "just pour le fun" ?exclure des repertoires avec la commande ls
Plus de sujets relatifs à : [C] - La commande system en C et l'insertion d'une char* !?


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)