L'essentiel du langage C

Saisir une valeur depuis le clavier

Testez gratuitement nos 1300 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Voyez ici les différentes façons d'appréhender la saisie d'une valeur depuis un clavier. Détaillez-en les avantages et inconvénients, et prenez en main la fonction scanf.
05:30

Transcription

Je vais vous parler de la saisie de valeurs à partir d'un clavier. Donc pour cela, dans les bibliothèques standards du C nous disposons de trois fonctions scanf, fgets et gets qui ont chacune un avantage et un inconvénient. Donc tout d'abord, la fonction scanf. Nous avons déjà utilisé plusieurs fois scanf qui a un avantage certain c'est qu'il est capable donc d'effectuer une saisie formatée. f comme formatée c'est que pour ça que nous avons scanf. Elle est complexe de fonctionnement, mais simple d'utilisation. L'inconvénient, c'est que vous avez une mise en mémoire tampon donc une vidange de la mémoire tampon qui doit être fait par une routine supplémentaire. Et en plus, elle ne prend pas en compte les espaces, tabulations, les entrées donc les saisies de phrases. Il n'y a pas non plus de contrôle de l'overflow. Qu’est ce que l'overflow ? Imaginons que vous créez une chaine de caractère, donc char chaine et puis que vous allouez dix éléments de type char dans chaine, pour y placer les fondamentaux du langage C. A partir de là, vous voyez que jusqu'à m ça va bien fonctionner, mais après vous allez dépasser. Et là vous avez comme même un gros dépassement et c'est ce qu'on appelle l'overflow. Et là vous venez écraser potentiellement d’autres données. Enfin, vous voulez remplacer. Donc si là vous aviez des valeurs, vous allez vous retrouvez avec en taux du langage c. Ce qui aille ce que de poser un certain nombre de problèmes. Vous avez aussi la mise en buffer. Alors, la mise en buffer c'est la mise en mémoire tampon. Alors là cette fois-ci vous avez char chaine[10] vous l'initialisez à 0, Vous voulez mettre les fondamentaux du langage C en mémoire, dans ce cas là, à chaque espace la méthode est de buffériser les morceaux qui sont entre chaque espace. Et après, l'affichage se fait à la suite. Donc vous affichez d'abord Les, puis la prochaine fois que vous appuierez sur entrer ça sera fondamentaux deuxième fois afficher du, etc, etc. Donc ça c'est un problème. Maintenant, passant un peu à la fonction fgets(). Un avantage, on peut écrire avec les espaces et des chaines de caractères complétes. f comme file, donc le contenu est prédestiné à être stocké dans un fichier. Donc pas de limites supérieurs à tous ça. L'inconvénient c'est le formatage automatique avec un '\n' après la chaine de caractère et non '\0'. Alors cela veut dire que d'un point de vue de votre chaine de caractère lorsque vous voulez après voyer suffisamment grande pour y mettre ce que vous voulez y mettre, il faut savoir que le dernier caractère ne sera pas pris en compte, puisque on vient y placer automatiquement le \n. Il nous reste le gets avantage: on peut écrire avec les espace des chaines de caractères complètes inconvénient: aucun contrôle de l'overflow. Une fois plus, on a le même probléme qu'avec le fscan. C'est ce que nous allons voir dans les différents petits programmes concernant les avantages et les inconvénients de chacune de ses fonctions. Je vais vous montrer le problème qui s'existe avec la fonction scanf. Pour l'instant nous l'avons toujours l'utilisée, simplement pour effectuer, entrer sur une chaine de caractère complète, sans espace ou rentrer une simple valeur, surtout des valeurs d'ailleurs. Donc je vais déclarer une chaine de caractères de 20 éléments de type char parce que je vais y mettre une chaine de caractères. Et en fait je vais simplement demander le nom et le prénom de la personne et on va voir ce qui se passe. On va valider ce qui été dit précédemment. Donc je lance ce programme, alors là on va envoyer scanf. Alors saisie d'une chaine de caractère pré formatée c'est %s comme string pour chaine de caractère c'est pour ça que ici vous avez le %s et %c c'est pour un seul caractère. Donc scanf a pour paramètre d'entrée en fait le type de format, donc ici string. Et puis, la chaine de caractère mais attention elle reçoit une adresse. Vous voyez, char est une pointeur, donc il faut charger le pointeur avec l'adresse de la chaine de caractères que vous allez y entrer. Et je mets simplement votre nom et prénom sont. Et nous allons valider en fait le fait que la fonction scanf n'est pas faite pour prendre en compte les espaces blanc. Donc, Entrez votre nom puis votre prenom ben je m'appelle Reant et puis mon prénom ben c'est Denis Voilà et puis Votre nom et prénom sont: Reant. Donc voilà le premier problème que l'on peut avoir avec la fonction scanf.

L'essentiel du langage C

Comprenez les concepts de base du langage C. Développez de simples applications en mode console, afin de comprendre les rouages d’un des langages les plus utilisés au monde.

7h51 (98 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :12 janv. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !