Obtenir les données de l'utilisateur en C

Jinku Hu 12 octobre 2023
  1. Utiliser la fonction scanf pour obtenir l’entrée de l’utilisateur selon le format donné en C
  2. Utilisez scanf pour analyser l’entrée de l’utilisateur en fonction du formatage donné
Obtenir les données de l'utilisateur en C

Cet article présente plusieurs méthodes pour obtenir la saisie de l’utilisateur en C.

Utiliser la fonction scanf pour obtenir l’entrée de l’utilisateur selon le format donné en C

La fonction scanf traite la saisie de l’utilisateur comme le texte formaté et stocke la valeur de la chaîne convertie dans le pointeur donné. Le prototype de la fonction est similaire à la famille de fonctions printf. Il prend l’argument de la chaîne de format comme directive sur la façon de traiter les caractères d’entrée et ensuite un nombre variable d’arguments de pointeur pour stocker les valeurs correspondantes.

Notez que le spécificateur %[^\n] ordonne au scanf de traiter chaque caractère avant le premier caractère de nouvelle ligne comme une seule chaîne et de la stocker dans le tampon char*. Le tampon de destination doit être suffisamment grand pour la chaîne de saisie de l’utilisateur. De plus, un caractère optionnel m peut être utilisé dans les spécificateurs de conversion de chaîne de caractères, et il forcera la fonction à allouer une taille de tampon suffisante pour stocker la chaîne d’entrée. Ainsi, l’utilisateur devra appeler la fonction free lorsque le pointeur donné n’est plus nécessaire.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  char str1[1000];

  printf("Input the text: ");
  scanf("%[^\n]", str1);  // takes everything before '\n'

  printf("'%s'\n", str1);
  exit(EXIT_SUCCESS);
}

Production :

Input the text: temp string to be processed
'temp string to be processed'

Alternativement, nous pouvons utiliser scanf pour traiter toute entrée de texte avant le caractère donné en modifiant le spécificateur de la chaîne de format. L’exemple suivant montre l’appel scanf qui analyse l’entrée de l’utilisateur jusqu’à ce que le premier caractère de la valeur 9 soit trouvé.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  char str1[1000];

  printf("Input the text: ");
  scanf(" %[^9]*", str1);  // takes everything before '9' in string

  printf("'%s'\n", str1);
  exit(EXIT_SUCCESS);
}

Production :

Input the text: temporary string 32j2 923mlk
'temporary string 32j2 '

Utilisez scanf pour analyser l’entrée de l’utilisateur en fonction du formatage donné

Une autre caractéristique utile de la fonction scanf est d’analyser l’entrée de l’utilisateur en fonction du format donné. Le caractère * est utilisé dans la chaîne de format pour éliminer les caractères correspondants en suivant le spécificateur de conversion. L’exemple de code suivant montre que la fonction scanf analyse les entrées de texte composées du symbole obligatoire : et ne stocke les caractères après le symbole donné qu’à la fin de la ligne. Cette option peut être utile pour analyser les textes de format fixe où certains caractères sont présents aux positions des délimiteurs.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  char str1[1000];

  printf("Input the text: ");
  scanf("%*[^:]%*c%[^\n]", str1);

  printf("'%s'\n", str1);
  exit(EXIT_SUCCESS);
}

Production :

Input the text: temporary value of var3: 324 gel
' 324 gel'
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C IO