Afficher valeur d'une fonction
Résolu/Fermé
karkol
Messages postés
408
Date d'inscription
mardi 24 janvier 2012
Statut
Membre
Dernière intervention
17 décembre 2016
-
18 oct. 2013 à 11:20
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 18 oct. 2013 à 19:36
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 18 oct. 2013 à 19:36
A voir également:
- Afficher valeur d'une fonction
- Fonction si et - Guide
- Excel ne pas afficher #valeur ✓ - Forum Excel
- Afficher mot de passe wifi android - Guide
- Excel renvoyer la valeur d'une cellule en fonction d'une autre - Forum Excel
- Afficher toutes les lignes masquées excel ✓ - Forum Excel
1 réponse
[Dal]
Messages postés
6174
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
2 février 2024
1 083
Modifié par [Dal] le 18/10/2013 à 13:20
Modifié par [Dal] le 18/10/2013 à 13:20
Salut,
je déduis de ton code que
Le prototype de sscanf est :
(voir http://www.cplusplus.com/reference/cstdio/sscanf/)
donc
Tu veux faire quoi exactement ?
En suite, c'est normal que
Pour ta fonction, atof n'est pas géniale, en raison des faiblesses de cette fonction en C, et cela t'oblige à convertir encore de float en int, puisque je comprends que ce sont des entiers que tu attends, de plus sans contrôle d'erreur valable.
Si 0 ou 360 sont des entrées valables, elles devraient être acceptées (de plus une entrée de 0 ne permettrait pas de distinguer le résultat obtenu d'une erreur, avec atof).
strol est plus indiquée.
Dal
je déduis de ton code que
angleAntenneest déclaré comme
int angleAntenne;.
Le prototype de sscanf est :
int sscanf ( const char * s, const char * format, ...);
(voir http://www.cplusplus.com/reference/cstdio/sscanf/)
donc
sscanf("%d",&angleAntenne);est erroné.
Tu veux faire quoi exactement ?
En suite, c'est normal que
printf("%d",&angleAntenne);donne le warning que tu mentionnes. Si tu veux afficher l'int contenu dans angleAntenne, tu dois faire simplement
printf("%d",angleAntenne);.
Pour ta fonction, atof n'est pas géniale, en raison des faiblesses de cette fonction en C, et cela t'oblige à convertir encore de float en int, puisque je comprends que ce sont des entiers que tu attends, de plus sans contrôle d'erreur valable.
Si 0 ou 360 sont des entrées valables, elles devraient être acceptées (de plus une entrée de 0 ne permettrait pas de distinguer le résultat obtenu d'une erreur, avec atof).
strol est plus indiquée.
#include <stdio.h>
#include <stdlib.h>
int captangl() //La fonction
{
long int x; //Pour la conversion de la chaine de carac en integer
char angl[5];
char * p;
do
{
printf("saisissez un nombre entier "
"entre 0 et 360 (compris)\n");
if (fgets(angl, 4, stdin) != NULL)
{
x = strtol(angl, &p, 10);
if (angl[0] != '\n' && (*p == '\n' || *p == '\0'))
printf("Vous avez entré le nombre : %ld\n", x);
else
{
printf("Erreur : vous n'avez pas "
"entré un nombre valide\n");
exit(EXIT_FAILURE);
}
}
} while ((x <= 0) || (x >= 360));
/* C'est bien un nombre qui a été saisi, et il est
* dans les limites acceptées. Il tient donc bien dans
* un int, que l'on peut retourner comme l'attend le
* prototype */
return (int) x;
}
int main(void)
{
int angleAntenne;
angleAntenne = captangl();
/* la ligne commentée ci-après ne sert à rien, à mon sens
* sscanf("%d", &angleAntenne);
* ou alors, je n'ai pas compris ce que tu veux
* (outre le fait que sa syntaxe est fausse) */
printf("%d", angleAntenne);
return 0;
}
Dal
18 oct. 2013 à 15:03
Dal
Modifié par [Dal] le 18/10/2013 à 19:45
Cela donnerait donc cela :
Dal