Guide de l'entrée utilisateur en C : Un guide pour débutants

Salut à toi, futur-e programmateur-e ! Aujourd'hui, nous allons plonger dans le monde passionnant de l'entrée utilisateur en programmation C. En tant que ton enseignant informatique de quartier, je suis là pour te guider dans ce voyage, étape par étape. Alors, prends une tasse de café (ou ta boisson favorite) et c'est parti !

C - User Input

Pourquoi avons-nous besoin de l'entrée utilisateur en C ?

Imaginons que tu crées un programme de calculatrice. Ce serait plutôt inutile s'il ne pouvait que additions 2 et 2, n'est-ce pas ? C'est là que l'entrée utilisateur entre en jeu ! L'entrée utilisateur permet à nos programmes d'être dynamiques et interactifs. Au lieu de toujours faire la même chose, nos programmes peuvent répondre à différents inputs et produire des résultats différents.

La baguette magique : la fonction scanf()

En C, notre baguette magique pour capturer l'entrée utilisateur est la fonction scanf(). C'est comme un filet qui attrape les informations que les utilisateurs tapent dans le programme. Voici un exemple :

#include <stdio.h>

int main() {
int number;
printf("Entrez un nombre : ");
scanf("%d", &number);
printf("Vous avez entré : %d\n", number);
return 0;
}

Dans cet exemple :

  1. Nous déclarons une variable int appelée number.
  2. Nous invitons l'utilisateur à entrer un nombre.
  3. Nous utilisons scanf() pour capturer l'input et le stocker dans number.
  4. Enfin, nous affichons le nombre à l'utilisateur.

Le %d dans scanf() dit à la fonction : "Hey, attends un entier ici !" Le & avant number dit : "Stocke l'input à cette adresse mémoire."

Types d'entrée : Explorons !

Entrée entière

Nous avons déjà vu comment entrer des entiers. Voici un exemple plus complexe :

#include <stdio.h>

int main() {
int age, year;
printf("Entrez votre âge et votre année de naissance : ");
scanf("%d %d", &age, &year);
printf("Vous avez %d ans et êtes né-e en %d.\n", age, year);
return 0;
}

Ici, nous capturons deux entiers d'un coup ! L'espace entre %d %d dit à scanf() d'attendre un espace ou un saut de ligne entre les inputs.

Entrée flottante

Que faire si nous voulons des nombres décimaux ? Entrez le float !

#include <stdio.h>

int main() {
float height, weight;
printf("Entrez votre taille (m) et votre poids (kg) : ");
scanf("%f %f", &height, &weight);
printf("Vous mesurez %.2f mètres et pesez %.1f kg.\n", height, weight);
return 0;
}

Notez le %f pour les floats. Dans la sortie, .2f et .1f contrôlent les décimales.

Entrée de caractères

Parfois, nous avons juste besoin d'un seul caractère :

#include <stdio.h>

int main() {
char grade;
printf("Entrez votre note (A-F) : ");
scanf(" %c", &grade);  // Notez l'espace avant %c
printf("Vous avez une %c. ", grade);

if (grade == 'A' || grade == 'B')
printf("Travail formidable !\n");
else if (grade == 'C')
printf("Pas mal, continuez à vous améliorer !\n");
else
printf("Travaillons plus fort la prochaine fois !\n");

return 0;
}

L'espace avant %c est crucial ! Il dit à scanf() d'ignorer tout espace (comme les sauts de ligne) avant de lire le caractère.

Entrée de chaînes

Enfin, capturons une chaîne complète :

#include <stdio.h>

int main() {
char name[50];  // Tableau pour stocker la chaîne
printf("Quel est votre nom ? ");
scanf("%49s", name);  // %49s pour empêcher le débordement de tampon
printf("Bonjour, %s ! Bienvenue dans la programmation C !\n", name);
return 0;
}

Quelques points à noter :

  1. Nous utilisons un tableau de caractères pour stocker la chaîne.
  2. Pas de & avant name dans scanf() car les noms de tableaux sont déjà des adresses.
  3. %49s limite l'input à 49 caractères, évitant ainsi le débordement de tampon.

La fonction scanf() : Un regard plus détaillé

Récapitulons les différents spécificateurs de format que nous avons vus :

Spécificateur de format Type de données
%d Entier
%f Flottant
%c Caractère
%s Chaîne

N'oublie pas, scanf() est puissant mais peut être capricieux. Vérifiez toujours si l'input a été réussi :

#include <stdio.h>

int main() {
int num;
printf("Entrez un nombre : ");
if (scanf("%d", &num) == 1) {
printf("Vous avez entré : %d\n", num);
} else {
printf("Entrée invalide !\n");
}
return 0;
}

Cela vérifie si scanf() a réussi à lire une valeur (== 1).

Conclusion

Whoua ! Nous avons couvert beaucoup de choses aujourd'hui. De los entiers aux chaînes, nous avons exploré comment rendre nos programmes C interactifs. Souviens-toi, la pratique rend parfait. Essaie de combiner différents types d'input dans tes programmes. Peut-être créer un simple jeu qui demande le nom, l'âge et le nombre préféré du joueur ?

La programmation est comme apprendre une nouvelle langue - plus tu l'utilises, plus elle devient naturelle. Alors, continue de coder, continue d'expérimenter, et surtout, amuse-toi ! Si tu es ever coincé, souviens-toi que chaque programmeur a été un débutant une fois. N'aie pas peur de poser des questions et de chercher de l'aide.

Jusqu'à la prochaine fois, bon codage !

Credits: Image by storyset