Bonjour et bienvenue.
Dans cette conférence, je veux parler de lecture de l'entrée du clavier.
C'est un concept de base que je voulait que
vous appreniez tôt car c'est très précieux et beaucoup de programmes prennent leur part.
J'ai donc fourni cela dès le début.
Certains des concepts ne sont pas va être tout à fait clair.
Mais nous allons certainement les apprendre concepts dans d'autres sections au fur et à
mesure, mais il est important de apprenez cela très tôt, et c'est très
similaire à la fonction printf.
Nous avons donc discuté de la sortie.
Nous savons formater sortie à l'aide de printf.
Nous devons maintenant apprendre un peu peu à propos de l'entrée, obtenant
essentiellement l'entrée de l'utilisateur.
Il est très utile de demander à l'utilisateur pour saisir des données dans un programme.
Nous avons parlé de ligne de commande arguments entrant des données de cette manière,
c'est une façon de le faire.
Une autre façon est de demander à l'utilisateur directement pour qu'ils puissent taper quelque
chose sur le clavier.
Donc, vous obtenez les commentaires de le clavier, mais il s'affiche
vous entrez l'entrée via le terminal la console.
C'est comme ça que vous entrez l'entrée.
La bibliothèque c contient plusieurs fonctions d'entrée.
Nous allons utiliser scanf.
C'est la fonction la plus générique.
C'est très utile.
Il fournit différents formats que vous pouvez saisir.
Ainsi, vous pouvez entrer du texte et ensuite il sera être converti en différents formats.
Donc scanf lit l'entrée du flux d'entrée standard, c'est stdin.
Scanf peut en fait être utilisé pour lire également à partir de fichiers si le flux
d'entrée est un fichier.
Mais nous n'allons pas nous inquiéter à propos
de tout cela pour le moment, nous allons simplement l'utiliser pour lire l'entrée du clavier.
D'accord, et donc stdin par la valeur par défaut est le clavier.
Stdin est un ruisseau.
Streams et c, trois différents flux.
Le flux d'erreur, standard in et sortie standard.
Standard par défaut est le clavier.
Nous allons donc continuer ainsi.
Et en utilisant scanf ça va lire à partir de la norme dans puis en fonction de
ce que vous entrez ou vous voulez stocker les données,
je devrais dire, ça va convertir ce que vous avez entré parce que
ce que vous entrez sera du texte.
Il va convertir ce texte en le format que vous avez fourni ainsi.
Il va utiliser des spécificateurs de format tout comme la fonction printf.
Le format peut donc être une séquence de caractères, qui s'appelle une chaîne.
Nous n'avons pas étudié cela dans beaucoup de détails encore.
Mais encore une fois, nous le ferons quand nous parlons de types de données.
Et puis aussi vous pouvez spécifier d'autres types de données dont
nous allons parler tels que entiers, nombres essentiellement.
Vous pouvez donc lire les nombres.
Vous pouvez lire des chaînes.
Vous pouvez lire les nombres qui contiennent des décimales, des caractères
individuels, tout ce truc sympa
Si la norme dans est entrée de le clavier qui est par défaut ce qui va
se passer est lorsque vous tapez du texte via le clavier, il va
prendre ce texte, le mettre dans le programme c et il va convertir ce texte.
Et le texte est des choses comme lettres, chiffres et ponctuation.
Donc même si vous tapez un nombre, c'est toujours du texte car
il vient du clavier.
Donc, si vous entrez l'entier 2014, qui est un nombre et essentiellement ce qui se passe est que vous
tapez caractères deux zéro un et quatre.
Et ce qui se passe et quoi se produira est il ajoutera
envoyer cette entrée au programme c.
Et si vous voulez stocker ces données en tant que nombre, vous allez
devoir convertir ces données.
Et donc vous devez spécifier le format spécifiez comment vous voulez le convertir, comme
vous le faites sur printf.
Rappelez-vous comme avec printf vous utilisez pourcentage d pour imprimer un entier.
Vous convertiriez le texte en un entier utilisant aussi pour cent d pour
scanf si vous vouliez convertir la chaîne en nombre.
Et c'est ce que nous allons à faire pour les bases dès le début.
Nous allons juste utiliser des nombres parce que
nous connaissons les chiffres jusqu'à présent, et nous n'avons pas vraiment appris encore sur les chaînes.
Donc nous allons principalement utilisez des nombres lorsque nous entrons.
Alors scanf.
C'est très similaire à printf.
Mais au lieu de cela, c'est un peu différent dans certains arguments qu'il prend.
Il utilise toujours une chaîne de contrôle suivi d'une liste d'arguments.
Alors il va y avoir quelque chose dans ces doubles guillemets.
Les guillemets doubles seront généralement ne contient qu'une seule chose et ce sera
le spécificateur de format.
Comment vous allez convertir les données.
Ainsi, la chaîne de contrôle indique les types de données de destination pour le
flux d'entrée de caractères.
C'est ce spécificateur de format, pourcentage d, pourcentage c, pourcentage s, pourcentage f pour
le débit et ainsi de suite.
La fonction printf utilise une variable noms, constantes et expressions dans ses
arguments parce que nous apprenons cela.
Vous avez quelque chose entre guillemets.
Et puis à l'intérieur du double guillemets, vous utilisez des spécificateurs de format.
Et puis après les virgules, vous pouvez imprimer des variables ou vous pouvez
même imprimer des expressions.
Expressions, nous en parlerons plus de détails également, quelque chose qui
renvoie essentiellement une valeur.
Type d'expression le plus courant est une expression arithmétique.
La fonction scanf est différente car au
lieu d'afficher réellement des variables, il va utilisez des variables pointées.
Mais heureusement des pointeurs est un grand concept en c.
Tu n'as rien à savoir à propos des pointeurs pour comprendre et
utiliser la fonction scanf.
Alors ne vous inquiétez pas pour ça.
Très bien, tout ce que tu as à faire c'est toi doivent se souvenir de trois
règles concernant la fonction scanf pour pouvoir l'utiliser.
Il va renvoyer le nombre de éléments qu'il lit avec succès.
Donc, s'il lit une variable, deux variables, trois variables, il renverra
cela.
Si vous utilisez scanf pour lire une valeur pour l'un des
types de variables de base que nous allons discuter, tels comme int, le float, le double, alors tout ce
que vous avez à faire est le nom de la variable, l'argument doit
être précédé d'une esperluette.
Tu n'as même pas besoin de savoir pourquoi c'est maintenant mais
faites-le, n'importe lequel des types de données de base.
Ampersand est une adresse.
Et parce que scanf prend un pointeur il faut dé-référencer, il
faut passer l'adresse.
La troisième chose que tu doivent se rappeler pour scanf.
Si vous utilisez scanf pour lire un chaîne qui est une séquence
de caractères dans un caractère, vous pas besoin d'utiliser l'esperluette.
Donc, fondamentalement, scanf prend deux arguments dont je vais vous
montrer un exemple.
Le premier argument sera de savoir comment pour convertir les données que vous saisissez.
Et si vous stockez ces données dans int, vous utilisez le
spécificateur de format percent d.
Si vous souhaitez stocker dans une chaîne que nous n'avons pas encore
appris, vous utilisez percent s.
Et puis le deuxième argument est et il peut y avoir plusieurs arguments en
fonction du nombre de spécificateurs de format que vous utilisez car tout comme printf serait
la variable réelle, le nom de la variable.
Et si la variable est tout sauf une chaîne, vous utilisez juste l'esperluette.
Sinon, tu ne utilisez l'esperluette.
La fonction Scanf utilise également des espaces pour décider comment diviser
l'entrée en champs séparés.
Et les espaces comprennent nouvelles lignes, tabulations et espaces.
Et encore une fois, je vais passer par un exemple pour vous
montrer ce que cela signifie car tout comme printf peut en afficher beaucoup, beaucoup de variables
en fonction du nombre de spécificateurs de format que vous avez dans le guillemets simples, même chose avec scanf.
Si scanf a plusieurs choses à l'intérieur des guillemets
doubles, il lira plusieurs entrées.
Et les entrées vont à diviser par de nouvelles lignes.
Donc encore une fois, si tu veux essayer pour comprendre ce qu'est
scanf, c'est l'opposé de printf.
Printf va convertir des entiers, nombres à virgule flottante, chaînes de caractères, toutes ces différentes
données types et il va le convertir en
texte, afin que vous puissiez le voir en sortie.
Et ça va être s'affiche à l'écran.
Scanf est le contraire.
Ça va prendre comme entrée texte et le convertir en l'un des différents types de données comme
les ints, les flotteurs et les doubles.
Alors regardons un exemple.
Ceci est un exemple de notre un programme simple.
Nous savons quelle est la routine principale.
Nous savons ce qu'est la directive include.
Nous n'avons pas appris caractères et entiers encore.
Mais fondamentalement, tout en haut de cela fonction principale, nous
créons deux variables car nous devons stocker les données, et nous allons
parler des variables plus en détail.
Mais tout comme la fonction printf, encore une fois, vous faites simplement le contraire.
Donc, ici, nous affichons la sortie vers l'écran disant entrer une valeur.
Scanf à l'intérieur du double quotes a des spécificateurs de format à
lire dans l'entrée.
Et vous devez donc spécifier le les données qui vont être lues,
ici, il est indiqué pour cent s, pour cent d.
Ce que cela signifie, c'est que nous lisons dans un string, alors nous lisons dans un int.
Et vous remarquerez que la chaîne n'a pas l'esperluette et scanf après
la première virgule.
Et après la deuxième virgule, nous avons un esperluette parce que c'est un entier.
Nous lisons un certain nombre.
Et puis le printf affiche la sortie.
Donc ça veut dire que tu es entré dans ça string dans cet entier, tout comme
nous savons ce que fait printf et ensuite la fonction principale renvoie un zéro.
Très bien, alors passons par là exemple dans une seconde en blocs de code.
Mais répétons simplement quelques concepts.
Lorsqu'un programme utilise scanf pour recueillir les entrées du clavier, il attend
que vous saisissiez du texte.
Donc, le programme est en cours pour faire une pause jusqu'à ce que vous saisissiez les données.
Et puis une fois que vous entrez du texte.
Et si vous entrez des espaces, si vous entrez plusieurs choses, le programme
se poursuit et lit l'entrée une fois que vous avez appuyé
sur le bouton Entrée.
Vous devez appuyer sur le bouton Entrée.
Encore une fois, scanf attend une entrée dans le exactement le même format que vous avez fourni.
Donc si tu dis pour cent s et pour cent e, cela
signifie que vous devez fournir une chaîne suivie d'un espace, n'importe quel nombre
d'espaces suivi d'un entier, d'un nombre et d'un mot.
La chaîne est un mot. L'entier est un nombre.
Alors passons par cet exemple ligne par ligne dans les blocs de code.
Ok, alors nous avons ici notre fonction principale.
Et encore une fois, il est important d'être capable de saisir des données dans un programme.
Donc, tout comme le printf, ça va pour être très similaire, et nous n'avons pas
à comprendre tout ce code.
Et nous nous débarrassons même de la paramètres qui
sont passés, fonction principale simple.
Nous n'avons pas à comprendre tout ce code.
Nous n'avons même pas besoin de comprendre quelles sont les variables à ce stade.
Mais les variables stockeront des données.
Dans l'exemple, nous créons un tableau de chaînes de 100 et avec un point-virgule et nous sommes
va aussi simplement créer un entier,
tout comme dans printf.
Nous avons un entier, mais nous utilisons une chaîne.
Je veux juste démontrer différentes entrées.
Puis généralement chaque fois avant toi appelez la fonction scanf pour obtenir une entrée du clavier,
vous êtes toujours va dire quelque chose à l'utilisateur.
Vous voulez leur dire quoi entrer.
Alors printf, souviens-toi, affiche les données à l'écran.
Nous allons simplement dire entrez une valeur.
Et ils vont en fait entrez un couple, puis nous le terminons par
un point-virgule.
Nous devons dire au l'utilisateur pour entrer quelque chose.
Maintenant, voici où nous utilisez la fonction scanf.
Nous disons scanf puis à l'intérieur du entre parenthèses le premier argument entre
les guillemets doubles va être des données que nous allons lire.
Donc, dans cet exemple, nous allons simplement disons que nous n'allons
lire qu'une entrée percent d qui est un entier.
Et puis nous allons stocker ces données dans une variable parce
que nous voulons les examiner.
Et ça va être moi.
Maintenant, nous devons spécifier l'esperluette avant cela parce que, rappelez-vous, cette petite astuce
avec des pointeurs.
Tu n'as pas besoin de savoir pourquoi, c'est juste l'adresse.
Donc, scanf, à la ligne 17, va effectivement lu les données du clavier jusqu'à ce que
l'utilisateur appuie sur le bouton Entrée.
Et puis ces données vont être stocké dans une variable appelée I.
Alors maintenant, nous voulons juste imprimez ce que nous sommes entrés.
Alors ici, nous allons juste dire, nous allons ajouter un saut de ligne pour qu'il soit
lisible, nous allons donc utilisez notre séquence d'échappement, barre oblique
inverse n et nous allons vous dire.
Vous avez entré pour cent d et nous allons pour afficher la valeur de la variable.
Et nous allons aussi mettre un saut de ligne après.
Donc la valeur de la variable que nous voulons afficher est i.
Nous allons finir avec un point-virgule.
Et puis c'est notre programme.
Donc encore une fois l'impression de la sortie, en demandant une valeur, lisant une ligne d'entrée 17 spécifiant que
les données que nous la lecture est un entier, le stocker dans, i
en utilisant une esperluette, puis imprimez ce que nous venons d'entrer.
Alors construisons ceci et exécutons-le.
Et tu verras que le programme démarre puis il s'arrête parce qu'il veut que vous
saisissiez une valeur.
Il dit entrer une valeur.
Donc à ce stade, je dois entrer un nombre que je peux convertir en une chaîne parce que c'est
ce qui se passe.
Alors ici, je vais juste dire 56.
Et puis, je vais appuyer sur Entrée.
Il a fonctionné deux fois parce que mon antivirus.
Je vais donc dire 56 et ensuite entrer.
Et puis il s'imprime, je suis entré 56.
J'ai donc pu saisir des informations, number et il l'a stocké dans une variable.
Maintenant, tout comme printf, vous pouvez en fait leur faire entrer
plusieurs choses et stocker dans plusieurs variables.
Alors ici après qu'ils se terminent par un entier, je vais dire un
autre pourcentage, spécificateur de format pourcentage s, ce qui signifie que je veux qu'ils entrent une chaîne, qui est
juste une recherche d'un mot.
Alors ici, souviens-toi, si c'est un mot, je pas besoin de fournir l'esperluette.
Alors je vais juste dire remuer, je veux stocker ces données
dans le magasin de variables.
Et encore une fois, nous en apprendrons davantage sur les variables.
Et puis je vais pour simplement l'imprimer.
Et j'ai ajouté une autre variable donc vous connaissez le printf et je vais juste
mettre des deux-points avant que vous ayez aussi pour spécifier le format
que vous imprimez, donc ce sont des pourcentages.
Alors j'espère que c'est clair.
Je vais maintenant lire en deux entrées séparées par des espaces, stockez-les
dans deux variables, I et remuez puis affichez-les.
Alors maintenant, si nous construisons et que nous courons.
Alors ici je vais entrer dans mon numéro 22, je vais frapper l'espace et ensuite je vais entrer mon nom et puis je
vais frapper retour.
Quand je fais ça, le programme va sur pause et il
va afficher le nombre I entré, puis la chaîne.
Donc, il affiche 22 et Jason.
Alors c'est comme ça que tu peux entrée de l'utilisateur, simple quatre ou
cinq lignes de code.
Une autre chose rapide que je veux montrer vous est comment vous pouvez lire dans un double.
Donc plus tard dans les leçons, vous êtes va être montré comment lire dans
float et qui utilise généralement un format spécifié pour cent f.
Mais si vous exécutez et lisez en double, c'est en fait un
peu différent que vous utilisez le pourcentage lf, donc un peu gardez cela à l'esprit.
Si je crée un nom de variable double x puis j'utilise scanf pour lire cela, je dois le lire
en utilisant le pourcentage LF.
C'est le format spécificateur que vous souhaitez utiliser.
Et encore une fois, tout comme le les autres, vous utiliseriez
l'esperluette pour l'adresse et dire x.
Et c'est ainsi que tu peux spécifiquement lu dans un double.
Et c'est différent que de lire dans un flux.
Alors gardez cela à l'esprit.
Lorsque vous allez exécuter ceci, vous remarquerez cela fonctionne assez simple.
Et vous pouvez lire l'entrée lire un double.
Alors allez-y et exécutez cela.
Et donc ça va demander double, je n'ai pas vraiment fait grand-chose.
Et cela double être comme 77. 8 et Ensuite, nous allons le lire et le
stocker, c'est assez simple.
Donc le scanf est très utile comme je l'ai mentionné.
Autres choses avec le scanf vous remarquerez au cours
du cours que scanf parfois ne fonctionne pas très bien.
Vous pouvez utiliser f get s pour d'autres choses.
Le principal problème avec scanf est lorsque vous lisez, vous ne lisez que jusqu'à ce
que vous voyiez un espace.
Et donc si vous essayez d'utiliser scanf, vous essayez de
l'appeler plusieurs fois dans une fonction.
Avec d'autres combinaisons, il peut ne fonctionne pas très bien
parce que ce qui se passe, c'est lorsque vous frappez le bouton retour
sur le clavier, ça va ça va pas lire ce bouton de retour car il
ne se lit qu'en un mot.
Et donc ça ne va pas pour obtenir le saut de ligne.
Ainsi, la prochaine fois que vous utiliserez scanf, ça va immédiatement sauter cette ligne
et ça va à lire dans le saut de ligne.
Donc c'est un problème que tu verras si vous écrivez plusieurs scanfs
dans un même programme les uns après les autres,
vous remarquerez que les autres scanfs ne s'exécutent pas car ils lisent dans le saut de ligne.
Un moyen très simple de contourner cela est juste après avoir fait un scanf vous appelez
simplement git char puis vous appelez un autre scanner, mais c'est plus un concept
dont on parlera plus tard.
C'était juste pour te montrer quand vous lisez dans un double en
utilisant scanf, assurez-vous d'utiliser le pourcentage LF.
Et encore une fois, c'est utile car certains de nos défis vous permettront d'obtenir
les commentaires de l'utilisateur afin de faire des choses utiles
et d'apprendre différents concepts, nous sommes capable d'obtenir des commentaires de l'utilisateur.
J'espère donc que cela a aidé.
Et encore une fois, ne t'inquiète pas pour certains
de ces concepts que vous ne comprenez pas complètement les choses comme les variables et les
chaînes, nous allons discuter de tout cela dans beaucoup de détails, merci.