Pages : 1
#1 Le 04/10/2007, à 20:46
- RedCow
Petite question sur le scanf()
Coucou voici mon code :
#include <stdio.h>
#include <stdlib.h>
int main ()
{
unsigned char nombre=0;
while (nombre != 8)
{
printf("Bonsoir !\nVeuillez saisir un nombre:");
scanf("%ld",&nombre);
printf("Ce nombre est %ld \n\n\n",nombre);
return 0;
}
Que mettre a la place de %ld vu que c'est un unsigned char?
Merci
#2 Le 04/10/2007, à 21:03
- stopher
Re : Petite question sur le scanf()
#include <stdio.h>
#include <stdlib.h>
int main()
{
unsigned char nombre;
while (nombre != 8)
{
printf("Bonsoir !\nVeuillez saisir un nombre:");
scanf("%s",&nombre);
printf("Ce nombre est %s \n\n\n",nombre);
}
return 0;
}
ca donne quoi ?
Dernière modification par stopher (Le 04/10/2007, à 21:21)
Hors ligne
#3 Le 04/10/2007, à 21:05
- RedCow
Re : Petite question sur le scanf()
Cela veut dire que si je veux utiliser un entier je suis obligé de mettre int?
#4 Le 04/10/2007, à 21:22
- stopher
Re : Petite question sur le scanf()
Ba c mieux qu'un char .. c'est plus adapté ...
J'ai quelque problemes avec anjuta .. je ne peut pas tester en live ..
Hors ligne
#5 Le 04/10/2007, à 21:28
- RedCow
Re : Petite question sur le scanf()
Mais cela prend beaucoups de mémoire non?
#6 Le 04/10/2007, à 21:35
- stopher
Re : Petite question sur le scanf()
Ba en fait :
char : 8 bits
int : 16 bits
Apres .. quand tu dis beaucoup .. je pense que c'est dérisoire face aux machines de maintenant ...
Hors ligne
#7 Le 04/10/2007, à 21:38
- best_friend_fr
Re : Petite question sur le scanf()
Salut
Non, tu peux mettre %c pour ton character.
Attention toutefois a deux choses :
1) dans ce cas, ton test devient nombre!='8'
2) Il faut que tu vides le buffer stdin apres chaque scanf, sinon, tu ves te retrouver avec 2 entrees, une pour ton chiffre, et une pour le retour a la ligne
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#8 Le 04/10/2007, à 21:39
- best_friend_fr
Re : Petite question sur le scanf()
@stopher:
Ca devient rare les processeurs 16 bits maintenant
Donc le int est a 32 ou 64 bits suivant ton processeur.
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#9 Le 04/10/2007, à 21:47
- best_friend_fr
Re : Petite question sur le scanf()
#include <stdio.h>
#include <stdlib.h>
int main()
{
char nombre;
while (nombre != '8')
{
printf("Bonsoir !\nVeuillez saisir un nombre:");
scanf("%c",&nombre);
getchar();
printf("Ce nombre est %c \n\n\n",nombre);
}
return 0;
}
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#10 Le 04/10/2007, à 21:51
- stopher
Re : Petite question sur le scanf()
C'est pas faut .. lol ...
Pourtant je ne suis pas un vieux ... mes infos en prog C/C++ doivent trop dater ...
Hors ligne
#11 Le 04/10/2007, à 22:08
- telliam
Re : Petite question sur le scanf()
si tu veux absolument garder le char, je coderai :
#include <stdio.h>
#include <stdlib.h>
int main()
{
char nombre;
while (nombre != '8')
{
printf("Bonsoir !\nVeuillez saisir un nombre:");
nombre = (char)getchar();
printf("Ce nombre est %d \n\n\n",(int)nombre);
}
return 0;
}
si tu regardes la manpage du getchar, tu verras que :
fgetc() lit le caractère suivant depuis le flux stream et
renvoie ce caractère, lu sous forme unsigned char, puis
transformé en int, ou EOF en cas d'erreur ou de fin de
fichier.getc() est équivalent à fgetc() sauf qu'il peut être
implementé sous forme de macro, qui évalue l'argument
stream plusieurs fois.getchar() est équivalent à getc(stdin).
donc le cast de int vers char pour la valeur retourné par getchar n'est pas dangereuse.
De plus pour le printf, il vaut mieux metter un %d plutot qu'un %c car le %c va t'afficher un caractere et non un nombre.
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne
#12 Le 04/10/2007, à 22:09
- RedCow
Re : Petite question sur le scanf()
Que signifie %c?
#13 Le 04/10/2007, à 22:11
- best_friend_fr
Re : Petite question sur le scanf()
@Telliam
Toujours la meme remarque, il faut vider le buffer entre 2 lectures...
Sinon, tu obtiens ca
Bonsoir !
Veuillez saisir un nombre:1
Ce nombre est 49Bonsoir !
Veuillez saisir un nombre:Ce nombre est 10Bonsoir !
Veuillez saisir un nombre:2
Ce nombre est 50Bonsoir !
Veuillez saisir un nombre:Ce nombre est 10Bonsoir !
Veuillez saisir un nombre:3
Ce nombre est 51Bonsoir !
Veuillez saisir un nombre:Ce nombre est 10
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#14 Le 04/10/2007, à 22:12
- best_friend_fr
Re : Petite question sur le scanf()
%c est pour un char
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#15 Le 04/10/2007, à 22:14
- telliam
Re : Petite question sur le scanf()
ok ok il manque un fflush
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne
#16 Le 04/10/2007, à 22:16
- telliam
Re : Petite question sur le scanf()
d'un autre coté autant mettre un int et on est tranquille :) non?
Dernière modification par telliam (Le 04/10/2007, à 22:17)
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne
#17 Le 04/10/2007, à 22:18
- best_friend_fr
Re : Petite question sur le scanf()
Ben oui, mais comme il dit, si il garde toutes les valeurs, au bout de 2 milliards de boucles, il devra commencer a swapper
sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr
Hors ligne
#18 Le 04/10/2007, à 22:24
- telliam
Re : Petite question sur le scanf()
pour l'instant sa variable n'est pas stockée, ca vaut peut etre pas trop la peine de se casser la tete pour quelques octets?
"- Un intellectuel assis va moins loin qu'un con qui marche."
Maurice Biraud - Un Taxi pour Tobrouk
Michel Audiard
Hors ligne