Besoin d'aide pour un code en c

Résolu
OFP -  
 OFP -

Bonjour,

Dans mon exercice, je dois rentrer des arguments x,y,h,w dans la console pour les récuperer à l'aide de la fonction argv. je dois ensuite donner chaque argument à des variables mais je n'y arrive pas. C'est a dire que x doit être donné à une variable a, y à une variable b... tous sont des double. Jai tenté de faire a,b,c,d=atol(argv[1]) mais ca ne fonctionne pas.


Windows / Chrome 108.0.0.0

3 réponses

  1. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     

    Si un format précis est garanti et que le nombre d'éléments est connu, un simple sscanf() fera l'affaire:

    sscanf( argv[1], "%lf,%lf,%lf,%lf", &a, &b, &c, &d );
    1
    1. OFP
       

      Merci beaucoup pour votre aide Dalfab je viens d'essayé et ca fonctionne !

      0
  2. Dalfab Messages postés 638 Date d'inscription   Statut Membre Dernière intervention   102
     

    Bonjour,

    Si j'ai bien compris la problématique, il faut les convertir un après l'autre;

    double  a = strtod( argv[1], NULL ); // convertir en double le 1er paramètre
    double  b = strtod( argv[2], NULL );
    double  c = strtod( argv[3], NULL );
    double  d = strtod( argv[4], NULL );
    0
    1. OFP
       

      Bonjour Dalfab ce n'est pas cela.

      En fait  mon argv[1] représente des coordonnées x,y et une hauteur et largeur h,w tous mis ensemble et séparés par des virgules sans espace par exemple :

      argv[1]='-1.14,-0.21,0.0055,0.0055'

      donc lorsque que lance mon programme j'écris:

      ./mandel -1.14,-0.21,0.0055,0.0055 

      Ce qui me pose problème c'est que je n'arrive pas à découper argv[1] en 4 parties distinctes pour donner chaqu'une des coordonnées à mes variables pour pouvoir les utiliser ensuite.

      0
  3. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     

    Bonjour,

    argv[1] étant une chaine, tu peux la découper avec strtok(), en utilisant la virgule comme séparateur:

    0