Cours d'initiation au langage C concernant la saisie de nombres et de caractères au clavier.
[...] La saisie s'arrête dès que le caractère a été frappé. La fonction getch n'est pas définie dans la norme ANSI mais elle peut exister dans la bibliothèque d'autres compilateurs. On peut utiliser getch de deux façons: - sans retour de variable au programme: Exemple: printf("POUR CONTINUER FRAPPER UNE TOUCHE getch(); - avec retour de variable au programme: Exemple: char alpha; printf("ENTRER UN CARACTERE (ATTENTION PAS DE RETURN) alpha = getch(); printf("\nVOICI CE CARACTERE: %c",alpha); Les parenthèses vides de getch() signifient qu'aucun paramètre n'est passé à cette fonction par le programme. [...]
[...] COURS/TP DE LANGAGE C Exemples: char alpha; int float scanf("%c",&alpha); saisie d'un caractère saisie d'un nombre entier en décimal saisie d'un nombre entier en hexadécimal*/ saisie d'un nombre réel Remarque: Si l'utilisateur ne respecte pas le format indiqué dans scanf, la saisie est ignorée. Aucune erreur n'est générée. char alpha; scanf("%d",&alpha); Si l'utilisateur saisie 97 tout va bien, alpha devient le caractère dont le code ASCII vaut 97. Si l'utilisateur saisie sa saisie est ignorée. Exemple: Exercice II_1: Saisir un caractère au clavier, afficher son code ASCII à l'écran. Soigner l'affichage. Exercice II_2: Saisir un nombre entier en décimal au clavier, l'afficher en hexadécimal à l'écran. Soigner l'affichage. [...]
[...] Lors du deuxième appel à scanf, le tampon n'est pas vide, l'utilisateur ne peut effectuer sa saisie clavier, le code ascii de LF est affiché à l'écran. A l'issue de l'exécution, le tampon est vide. Exercice II_5: Le programme suivant s'exécute-t-il "correctement" ? Que contient le tampon à l'issue de l'exécution ? #include #include void main() { char int printf("ENTRER UN CARACTERE: printf("VOICI SON CODE ASCII EN HEXADECIMAL: printf("ENTRER UN NOMBRE: printf("VOICI CE NOMBRE EN HEXADECIMAL: printf("POUR CONTINUER FRAPPER UNE TOUCHE getch(); } Exercice II_6: Le programme suivant s'exécute-t-il "correctement" ? [...]
[...] #include #include void main() { char printf("ENTRER UN CARACTERE: printf("VOICI SON CODE ASCII: printf("POUR CONTINUER FRAPPER UNE TOUCHE getch(); } COURS/TP DE LANGAGE C NOTION DE FLUX D'ENTREE Lorsque l'on saisit au clavier une suite de caractères terminés par "RETURN" ces caractères sont rangés dans un tampon (ou buffer) de type FIFO (First In/First Out), le dernier caractère rangé dans le tampon est LF (code ASCII 0x0A). Cette suite de caractères est appelée flux d'entrée. La taille du tampon dépend de la machine et du compilateur utilisés. Sur un PC et en TURBOC, la taille du tampon est de 127 caractères. Une compilation du programme vide le tampon. LA FONCTION SCANF DEUXIEME APPROCHE La fonction scanf ne se comporte pas tout à fait comme décrit plus haut. Si le tampon est vide, tout se passe comme précédemment décrit. [...]
[...] Remarque: En TURBOC la fonction flushall() permet de vider le tampon d'entrée. En l'invoquant après un appel à scanf, on se débarrasse des problèmes de flux d'entrée. LA FONCTION GETCHAR La fonction getchar pemet la saisie d'un caractère (char). Elle appartient à la bibliothèque stdio.h. Les 2 écritures suivantes sont équivalentes: char printf("ENTRER UN CARACTERE: char printf("ENTRER UN CARACTERE: c = getchar(); Non formatée, la fonction getchar est moins gourmande en place mémoire que scanf. Il vaut mieux l'utiliser quand cela est possible; getchar utilise le flux d'entrée exactement comme scanf. [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture