Besoin d'aide pour un code en c

Résolu/Fermé
OFP - 27 déc. 2022 à 10:36
 OFP - 28 déc. 2022 à 10:53

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

A voir également:

3 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
27 déc. 2022 à 15:18

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

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

0
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
27 déc. 2022 à 10:48

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

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
Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
Modifié le 27 déc. 2022 à 12:29

Bonjour,

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

0