help en c

help en c - Programmation

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);
  }
}

Reply

Marsh Posté le 26-07-2001 à 14:07:47   

Reply

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.

Reply

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]

Reply

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 !

Reply

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 ?

Reply

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 ?

Reply

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

Reply

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 ?

Reply

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.  :fou:

Reply

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

Reply

Marsh Posté le 26-07-2001 à 15:09:50   

Reply

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

Reply

Sujets relatifs:

Leave a Replay

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