Lecture et validation des entrées
Une opération d’entrée peut échouer ; son résultat doit toujours être vérifié.
Qu’est-ce que Lecture et validation des entrées ?
Une opération d’entrée peut échouer ; son résultat doit toujours être vérifié.
Lisez une entrée utilisateur et refusez les valeurs invalides.
Points importants
- Activez les avertissements du compilateur et corrigez-les.
- Connaissez le type et la durée de vie de chaque valeur.
- Validez les entrées et les limites des tableaux.
Exemples de code C et C++
main.c
#include <stdio.h>
int main(void) {
int age;
printf("Age: ");
if (scanf("%d", &age) != 1 || age < 0) {
puts("Invalid age");
return 1;
}
printf("Next year: %d\n", age + 1);
return 0;
}
Age: 20
Next year: 21
C++
main.cpp
#include <iostream>
int main() {
int age;
std::cout << "Age: ";
if (!(std::cin >> age) || age < 0) {
std::cerr << "Invalid age\n";
return 1;
}
std::cout << "Next year: " << age + 1 << '\n';
}
Age: 20
Next year: 21
Comparaison entre C et C++
scanf renvoie le nombre de conversions réussies ; std::cin passe en état d’échec si le type demandé ne peut pas être lu.
C
C expose de petites API procédurales et les détails de représentation.
C++
C++ conserve le modèle bas niveau et ajoute des types et abstractions plus sûrs.
Exercices pratiques
Exécutez les deux versions puis modifiez-les pour observer leurs garanties.
- Ajoutez des entrées invalides et limites.
- Compilez avec -Wall -Wextra -Wpedantic.
- Séparez déclarations et implémentations.