arguments dans programme C

arguments dans programme C - C - Programmation

Marsh Posté le 08-10-2014 à 17:34:16    

Bonjour,
 
Je suis nouvelle utilisatrice du langage c.
Je voudrais inclure des arguments dans mon script c, j'ai donc inclu cette partie au début de mon script:
 
int main(int argc, char **argv)
{
    if(argc < 3)
    {
         fprintf(stderr, "Give 2 args!\n" );
         exit(-1);
    }
 
    char *arg1 = argv[1];
    char *arg2 = argv[2];
 
    fprintf(stdout, "You gave: %s, %s\n", arg1, arg2);
 
 
Je veux ensuite ouvrir arg1 et arg2 plus loin dans mon script avec ces commandes:
char prefixout[150]={arg1};
ncidin=ncopen("arg2",NC_NOWRITE);
 
Sachant que arg1 et arg2 correspondent à des noms de fichiers de type "toto.nc "
Mais ça ne marche pas, mes arguments arg1 et arg2 ne sont pas pris en compte
 
Merci pour votre aide

Reply

Marsh Posté le 08-10-2014 à 17:34:16   

Reply

Marsh Posté le 15-10-2014 à 18:44:23    

Bonjour
 
Une chaine c'est un tableau de caractères. Or la copie d'un tel tableau se fait caractère par caractère. Toutefois ça a déjà été programmé dans la fonction strcpy
Donc

Code :
  1. char prefixout[150];
  2. strcpy(prefixout, arg1);


 
Quant à ta seconde instruction, arg2 est une variable qui contient une chaine. Donc tu l'appeles directement dans ta fonction, celle-ci traitera bien la chaine contenue.

Code :
  1. ncidin=ncopen(arg2, NC_NOWRITE);


Mais sans mettre de quotes sinon ça signifie que tu appelles la chaine "arg1" et non la variable "arg1".
 
Ceci dit, je me suis toujours demandé pourquoi les programmeurs qui ont déjà une variable contenant ce qu'ils veulent se croient obligé de la transférer dans une seconde (voire une troisième dans ton cas). Pour simplfier, à quoi te servent arg1 et arg2 qui sont identique à argv[1] et argv[2] (et aussi prefixout qui reçoit en plus une copie de arg1) ???


Message édité par Sve@r le 15-10-2014 à 18:45:55

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

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