- La commande system en C et l'insertion d'une char* !? [C] - C - Programmation
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
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 !!!
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
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.
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);
^^
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 :
|
Marsh Posté le 01-02-2007 à 19:43:04
Reply
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