help en c - Programmation
Marsh Posté le 26-07-2001 à 14:25:36
Dans un de mes vieux programmes, on a un
char *argv[];
et non un float *argv[];
Si on trouve dans argv[1] le premier float, et dans [2] le second, on peut passer par la fonction
atof() qui retourne le float contenu dans la chaîne.
Flot1 = atof(argv[1]);
Flot2 = atof(argv[2]);
Ai pas essayé pour voir si ça résoud le pb.
Marsh Posté le 26-07-2001 à 14:28:41
Mais, sans essayer, je confirme...en tout cas, c sur que ça pouvais pas marcher !
argv est fait pour pouvoir récupérer n'importe quoi...il prend donc tt ss forme d'une chaine de char...il ne reste après plus qu'a les convertir en ce qu'on veux: des floats pour toi, avec la fonction que t'as indiqué carbon14 : atof.
[edtdd]--Message édité par El_gringo--[/edtdd]
Marsh Posté le 26-07-2001 à 14:39:28
on dirait que atof ne fait pas son boulot correctement !
j'ai une conversion qui ne correspond pas !
Marsh Posté le 26-07-2001 à 14:44:27
Il y a #include <math.h> déclaré au début ?
atof renvoie un double, je pense pas que cela gène !
Essayer F1 = (float)atof() ?
Les valeurs sont biens "entrées" sur la ligne de commande sans espace ?
Marsh Posté le 26-07-2001 à 14:50:17
non ! ca marche toujours pas, j'ai mis math.h c'est toujours au moment de la conversion que ca deconne.
un probleme avec atof ?
Marsh Posté le 26-07-2001 à 15:00:36
ca y est j'ai reussit merci !
je me suis aussi aider de cette page http://www.cplusplus.com/ref/cstdlib/atof.html
Marsh Posté le 26-07-2001 à 15:02:12
lamasu a écrit a écrit : resultat=(*argv[1]) * (*argv[2]); //c'est surement ici ke ca va pas printf("resultat de %f * %f = %f",*argv[1],*argv |
à quoi servent les '*' devant tes argv[] ?
resultat = atof(argv[1]) * atof(argv[2]), ça ne marche pas ?
Marsh Posté le 26-07-2001 à 15:05:25
?
j'ai regardé mon prog, math.h n'y était pas (! ?).
Avec char *c1, *c2;
c1 = argv[1];
c2 = argv[2];
float Float1 = atof(c1); // idiot ?
En remplaçant argv[1] par la chaîne littérale voulue, atof() fonctionne ? Si oui, c'est argv[] qui ne lui plaît pas.
Marsh Posté le 26-07-2001 à 15:09:50
voici le prog corrigé à la fin pour ceux qui sont intrigués !
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double resultat,a,b;
FILE *outputfile="d:\text.txt";
main (argc, argv)
int argc;
char *argv[];
{
if (argc != 3)
fprintf (stderr, "SYNTAX : %s [value1] [value2] \n", argv[0]);
else
{
a = atof (argv[1]);
b = atof (argv[2]);
resultat=a * b ;
printf("res de %f fois %f egal %f",a,b,resultat);
printf("arg %s %s",argv[1],argv[2]);
outputfile = fopen("text.txt","w" );
fprintf(outputfile,"%s %f\n","set var",resultat);
fclose(outputfile);
}
}
je pense qu'il n'y a pas besoin de math.h
Marsh Posté le 28-07-2001 à 23:36:28
juste une question pour embetter ça te sert à quoi ça:
FILE *outputfile="d:\text.txt";
je doit dire que je suis relativement perplex, mais bon
Marsh Posté le 26-07-2001 à 14:07:47
j'ai fait un prog qui est sensé prendre 2 parametres et les multiplier pour stocker le resultat dans un fichier.
Mon prob : je n'arrive pas à prendre correctement des floats... j'ai un resultat bidon ! si quelqu'un peut me trouver l'erreur
#include <stdio.h>
float resultat;
FILE *outputfile="d:\text.txt";
main (argc, argv)
int argc;
float * argv[];
{
if (argc != 3)
fprintf (stderr, "SYNTAX : %s [value1] [value2]\n", argv[0]);
else
{
resultat=(*argv[1]) * (*argv[2]); //c'est surement ici ke ca va pas
printf("resultat de %f * %f = %f",*argv[1],*argv[2],resultat);
outputfile = fopen("text.txt","w" );
fprintf(outputfile,"%s %f\n","set var",resultat);
fclose(outputfile);
}
}