Afficher valeur d'une fonction
Résolu
karkol
Messages postés
408
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Afficher valeur d'une fonction
- Fonction si et - Guide
- Afficher appdata - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Afficher taille dossier windows - Guide
- Attribuer une valeur à une cellule texte excel ✓ - Forum Excel
1 réponse
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
Dal
Cela donnerait donc cela :
Dal