Fonction de saisi avec un nombre de parametre variable - C - Programmation
Marsh Posté le 03-02-2007 à 15:35:17
Boaf... pourquoi ne pas faire simplement:
Code :
|
???
Marsh Posté le 03-02-2007 à 15:48:17
Sve@r a écrit : Boaf... pourquoi ne pas faire simplement: ... sscanf() ... |
Je n'avais pas pençais a sscanf() /*pourtant c'est la plus evidante*/
Mais avec ton code, quand je fait:
Code :
|
et qu'a l'appel de read_number() je saisi un caractère différant d'un nombre, sa m'affiche une boucle infinie de "This is not a number\n" !
Marsh Posté le 03-02-2007 à 18:21:36
bad___day a écrit : Je n'avais pas pençais a sscanf() /*pourtant c'est la plus evidante*/
|
Ben peut-être que si t'incluais la fonction "read_string()" dans le while l'algo te permettrait de re-rentrer autre chose dans la variable "chaine" sinon ta chaine ne change pas !!!
Style "boucle infinie" => saisir chaine => si sscanf(chaine, ..., ...) == 1 break => affichage "pas un nombre" => fin de boucle
Marsh Posté le 05-02-2007 à 15:19:34
Oué cest vraie .
Sinon y a t il un moyen de faire une fonction avec un nombre dynamique d'arguments ?
càd: faire une fonction avec un nombre de paramètre variable
Marsh Posté le 05-02-2007 à 18:20:51
bad___day a écrit : Oué cest vraie . |
Oui : K&R2 Annexe B7 (Page 259).(<stddarg.h> )
Marsh Posté le 06-02-2007 à 17:44:58
Emmanuel Delahaye a écrit : Oui : K&R2 Annexe B7 (Page 259).(<stddarg.h> ) |
Ok merci je vais voire ça.
Sinon, pour mon premier code, comment je peut faire pour mettre le résultat dans la variable number avec le bon format, si je ne veut pas utiliser sscanf() ?
je pose cette question car je tombe fréquemment sur des problème dans ce genre..
NB: Emmanuel Delahaye peut tu me dire stp si mon Code est un code de Goret (si oui, en quoi) ? car on m'a renvoyer sur la page de ton site "l'échelle de Goret" quand j'ai posé la même question sur un autre forum !
Marsh Posté le 06-02-2007 à 18:01:27
bad___day a écrit : Sinon, pour mon premier code, comment je peut faire pour mettre le résultat dans la variable number avec le bon format, si je ne veut pas utiliser sscanf() ? |
Tu peux préciser quels genre de problèmes ? Souvent, quand une solution est complexe, c'est que le problème est mal posé ou qu'une solution 'en amont' permet de simplifier ...
Citation : NB: Emmanuel Delahaye peut tu me dire stp si mon Code est un code de Goret (si oui, en quoi) ? car on m'a renvoyer sur la page de ton site "l'échelle de Goret" quand j'ai posé la même question sur un autre forum ! |
Le goto remontant mérite un niveau 9... Il y a 3 formes de boucles en C...
Marsh Posté le 06-02-2007 à 18:09:52
Emmanuel Delahaye a écrit : Tu peux préciser quels genre de problèmes ? |
C'est un exemple concret celui là si la fonction sscanf() n'avais pas exister...
C'est généralement quand je veut mettre en argument une variable que je ne sais pas qu'elle type elle dois prendre au départ... comme là.
Marsh Posté le 06-02-2007 à 18:35:20
bad___day a écrit : C'est un exemple concret celui là si la fonction sscanf() n'avais pas exister... |
La question de la saisie de donnée est de celles qu'on règle une fois pour toutes au début de sa carrière d'informaticien. L'expérience montre qu'avec :
on a fait le tour de la question définitivement en 4 à 6 fonctions.
En matière de saisie, il vaut mieux des fonction spécialisées qui vont pouvoir se consacrer aux tests et autres vérifications sans être polluées par d'autres problèmes.
Il n'est pas nouveau de constater que scanf() est une usine à gaz...
http://mapage.noos.fr/emdel/clib.htm
Module IO
Marsh Posté le 03-02-2007 à 15:29:20
Hello all,
J'essaye de faire une fonction de saisi de nombre, qui prend en paramètre le format du nombre a saisir (%d ou %ld ou %lf ou %lu etc..) et un pointeur sur une variable nombre dans la quel saisir.
Mais le problème c'est que cette variable peut être de n'importe quel type (long int ou bouble ou unsigned long int ou ...) , alors j'ai ponçais de la mettre comme argument pour ma fonction read_number() en type (void*) comme suite:
int read_number(const char *format, void *number);
C'est que je ne sais pas si ça ce fait,
et surtout que la variable number va être traiter dans plusieurs cas selon le format.
Si vous voulez le code source de ce que j'ai fait pour le moment alors voila (mais il est erroner):
je essayer de regarder dans stdio.h , histoire de voire la fonction scanf() mais il n y a rien d'intéressant.
thanks for your help.
Message édité par bad___day le 05-02-2007 à 15:35:25