[C] passer en argument un nom de fichier

passer en argument un nom de fichier [C] - C - Programmation

Marsh Posté le 17-09-2005 à 15:47:20    

Bonjour,
j'aimerais lire/écrire et faire d'autres opérations dans un fichier via un programme C. J'aimerais passer ce fichier en argument de la ligne de commande. Comment dois-je m'y prendre? J'espérais qu'il existe une fonction atos (to string)  :pt1cable:  mais non.

Reply

Marsh Posté le 17-09-2005 à 15:47:20   

Reply

Marsh Posté le 17-09-2005 à 16:00:41    

juju286 a écrit :

j'aimerais lire/écrire et faire d'autres opérations dans un fichier via un programme C. J'aimerais passer ce fichier en argument de la ligne de commande. Comment dois-je m'y prendre?


L'une des formes normalisées de main est()  

int main (int argc, char **argv)


Les arguments de la ligne de commande sont dans argv[1] argv[2] etc. en fonction de la valeur de argc...
En argv[0], il y a soit une chaine vide, soit le nom du programme seul, soit le nom du programme avec le chemin complet.
 
Il est temps d'ouvrir un livre de C, cette notion est basique.


Message édité par Emmanuel Delahaye le 17-09-2005 à 16:03:05

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 17-09-2005 à 16:17:48    

Je sais ca. Seulement quand j'utilise argv[1] dans cette portion de code
 
FILE *source;  
source = fopen("argv[1]", "r" );
 
il n'y a pas de problème à la compilation, mais une 'segmentation fault' quand j'éxécute
 
./prog.c nom_du_fichier

Reply

Marsh Posté le 17-09-2005 à 16:19:10    

juju286 a écrit :

Je sais ca. Seulement quand j'utilise argv[1] dans cette portion de code
 
FILE *source;  
source = fopen("argv[1]", "r" );
 
il n'y a pas de problème à la compilation, mais une 'segmentation fault' quand j'éxécute
 
./prog.c nom_du_fichier


 
./prog.x nom_du_fichier

Reply

Marsh Posté le 17-09-2005 à 16:31:02    

juju286 a écrit :

Je sais ca. Seulement quand j'utilise argv[1] dans cette portion de code


FILE *source;  
source = fopen("argv[1]", "r" );


Qui t'a dit qu'il fallait mettre des guillemets ?

source = fopen(argv[1]), "r" );


il n'y a pas de problème à la compilation, mais une 'segmentation fault' quand j'éxécute
./prog.c nom_du_fichier


L'exécutable n'est certainement pas "./prog.c". Si tu as rendu un .c exécutable, c'est une anerie.
 
L'exécutable est le fichier produit par l'éditeur de lien.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 17-09-2005 à 16:33:43    

Emmanuel Delahaye a écrit :

L'exécutable n'est certainement pas "./prog.c". Si tu as rendu un .c exécutable, c'est une anerie.
 
L'exécutable est le fichier produit par l'éditeur de lien.


 
j'ai essayé au sans les guillements c'est pareil. Pour prog.c c'est une erreur de frappe, j'ai corrgié après dans le post suivant.

Reply

Marsh Posté le 17-09-2005 à 17:00:15    

juju286 a écrit :

j'ai essayé au sans les guillements c'est pareil. Pour prog.c c'est une erreur de frappe, j'ai corrgié après dans le post suivant.


Bon alors on en est où ?
 
Code qui ne fonctionne pas :  
...
 
Ligne de commande :  
...
 
Et copié/collé SVP.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 17-09-2005 à 17:07:56    

Emmanuel Delahaye a écrit :

Bon alors on en est où ?
 
Code qui ne fonctionne pas :  
...
 
Ligne de commande :  
...
 
Et copié/collé SVP.


 
on en est que j'ai laissé tomber SANS RIEN TOUCHER. frustré je suis revenu, j'ai éxécuté (SANS RECOMPILER) et là  :heink:  bah ca marche  :sweat:

Reply

Sujets relatifs:

Leave a Replay

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