Bonjour, je suis en train de faire une fonction qui lit un fichier texte. En gros, à chaque ligne j'ai un mot-clé et une valeur associée
Donc avec fgets() et strtod() ou strtol() j'arrive à récupérer toutes mes valeurs. Mais je pense que strtod() (ou strtol()) ne suffisent pas car il faut avant tout que je contrôle ma chaine de caractères (renvoyée par fgets()). Si je fais la chose suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 TEMP 20.3 PRES 2.9
j'ai comme sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 double d1, d2, d3; d1 = strtod("2.6",NULL); printf("d1 = %f\n",d1); d2 = strtod("2.6.1",NULL); printf("d2 = %f\n",d2); d3 = strtod("XXX",NULL); printf("d3 = %f\n",d3);
ce n'est pas "normal". Comment puis-je m'assurer que d2 et d3 sont en fait faux (et devraient renvoyer une erreur) ? Il faudrait faire une fonction à côté qui analyse la chaine de caractères passée à strtod() (et strtol()) et qui fasse :d1 = 2.600000
d2 = 2.600000
d3 = 0.000000
1) qui regarde si tous les caractères sont soit un chiffre, soit un point, soit un signe "-"
2) qui vérifie qu'il y a au maximum un seul point (2.6 et non 2.6.1)
3) qui vérifie qu'il y a au maximum un seul signe "-" et que ce dernier s'il existe est en 1e position (-2.6 et non 2-.6 par exemple)
Mais je pense que scanf fait tout ce boulot non ? Il faut "juste" que je vérifie la valeur de retour de cette fonction.
Qu'en pensez-vous ?
Merci de vos remarques
Partager