Probleme avec la saisie de flottant et double

Probleme avec la saisie de flottant et double - C - Programmation

Marsh Posté le 03-10-2004 à 14:37:05    

Je debute en C et j'ai des problemes avec la saisie de flottant et de double ...
 
Lorsque je restitu le resultat il me sort n'importe quoi !
 
Merci de votre aide :jap:  

Code :
  1. #include <stdio.h>
  2. /* permet de saisir une chaine de caractere au clavier */
  3. char* getString()
  4. {
  5.   /* taille reservee en memoire par defaut pour la chaine de caracteres */
  6.   int taille = 1;
  7.   /*  
  8.      pointeur: adresse de depart de l'espace reservee
  9.      malloc() permet de reservee un bloc memoire
  10.   */
  11.   char* pointeur = (char*) malloc (taille * sizeof(char));
  12.  
  13.   /*
  14.     getchar() recupere le caractere saisi, et ce dernier est placee dans l'endroit cree a cet effet
  15.   */
  16.   *pointeur = (char) getchar();
  17.  
  18.   /*
  19.     Tant que l'on ne saisit pas "entree" on continue d'agrandir l'espace reserve et donc on continue de stocker les caractere entres
  20.   */
  21.   while ( *(pointeur + taille - 1) != '\n' ) /* -1 car l'indice de l'espace reserve commence a 0 */
  22.     {
  23.       pointeur = (char*) realloc (pointeur, ++taille * sizeof(char)); /* on augmente l'espace reserve de 1 caractere */
  24.       *(pointeur + taille - 1) = (char) getchar(); /* on recupere les second, troisieme et les autres jusqu'a ce que l'utilisateur entre "entree"  */
  25.     }
  26.  
  27.  
  28.   /* on met le delimiteur de fin de chaine a la fin de l'espace reserve */
  29.   *(pointeur + taille - 1) = '\0';
  30.  
  31.   /* on retourne l'adresse ou a ete stocke la chaine */
  32.   return pointeur;
  33. }
  34. /* permet de saisir un entier au clavier */
  35. int getInt()
  36. {
  37.   int entier;
  38.   scanf("%d", &entier);
  39.   return entier;
  40. }
  41. /* permet de saisir un flottant au clavier */
  42. float getFloat()
  43. {
  44.   float flottant;
  45.   scanf("%f", &flottant);
  46.   return flottant;
  47. }
  48. /* permet de saisir un double au clavier */
  49. double getDouble()
  50. {
  51.   double doubl;
  52.   scanf("%f", &doubl);
  53.   return doubl;
  54. }
  55. /* permet de saisir un caractere au clavier */
  56. char getCharacter()
  57. {
  58.   char car;
  59.  
  60.   car = (unsigned char) fgetc(stdin);
  61.   //car = (char) getchar();
  62.   //scanf("%c", &car);
  63.   return car;
  64. }
  65. /*
  66. int main ()
  67. {
  68. return 0;
  69. }
  70. */

Reply

Marsh Posté le 03-10-2004 à 14:37:05   

Reply

Marsh Posté le 03-10-2004 à 14:44:02    

oulà c'est compliqué ton truc. utilise fgets (ou readline présent sur de nombreux sytèmes) et tes commentaires sont beaucoup trop présents
 
 
sinon, problème bateau du débutant
 
#   double doubl;
#   scanf("%f", &doubl);
 
le format de lecture des double est %lf et pas %f
 

Reply

Marsh Posté le 03-10-2004 à 14:47:00    

Taz a écrit :

tes commentaires sont beaucoup trop présents
 


 
Bah j'ai un binome à 2 euros alors je fais ca pour lui :p
 
sinon merci pour le lf :D

Reply

Marsh Posté le 03-10-2004 à 14:48:11    

quand le format n'est pas assurer, je prefere utiliser fgets/sscanf a scanf

Reply

Marsh Posté le 03-10-2004 à 14:52:17    

ça change rien, si le format est invalide comme ici, quoique tu fasse, tu t'expose à un pointer dans le décor

Reply

Sujets relatifs:

Leave a Replay

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