Compter les mots d'une phrase en C et C++
Dans cette leçon, vous allez compter les mots séparés par des espaces dans une phrase en suivant l'état du programme pendant le parcours de la chaîne.
Introduction
Une façon fiable de compter les mots consiste à savoir si le programme se trouve à l'intérieur d'un mot ou dans un espace. Chaque fois qu'on passe d'un espace à un caractère qui n'en est pas un, un nouveau mot commence. Cette méthode fonctionne même avec plusieurs espaces consécutifs.
Points importants
- Activez les avertissements du compilateur (compiler warnings) et corrigez-les tous.
- Comprenez bien le type et la durée de vie (lifetime) de chaque valeur.
- Vérifiez toujours les données d'entrée et les limites des indices de tableau.
Exemples de code C et C++
#include <ctype.h>
#include <stdio.h>
int main(void) {
const char *text = "C and C++ examples"; int words = 0, inside = 0;
// Count transitions from whitespace into a word.
for (; *text; ++text) { if (isspace((unsigned char)*text)) inside = 0; else if (!inside) { ++words; inside = 1; } }
printf("words=%d\n", words);
}
words=4
#include <iostream>
#include <sstream>
#include <string>
int main() {
std::istringstream input("C and C++ examples"); std::string word; int words = 0;
// Formatted extraction skips whitespace and returns one word.
while (input >> word) ++words;
std::cout << "words=" << words << '\n';
}
words=4
Comparaison entre C et C++
La variable inside indique si la position courante est à l'intérieur d'un mot. Quand un espace est rencontré (vérifié avec isspace), inside repasse à 0. Quand un autre caractère arrive alors qu'inside vaut 0, le programme incrémente le compteur words et met inside à 1. La phrase "C and C++ examples" contient 4 mots.
C utilise de petites fonctions procédurales et montre ouvertement comment les données sont représentées en mémoire.
C++ permet toujours de travailler à bas niveau, mais ajoute des types de bibliothèque et des abstractions plus sûres.
Exercices d'approfondissement
Exécutez les deux versions, puis modifiez le code pour observer la différence de sécurité qu'apporte chaque langage.
- Testez des entrées invalides et des valeurs limites.
- Compilez avec les options -Wall -Wextra -Wpedantic pour activer davantage d'avertissements.
- Placez les déclarations communes dans un fichier d'en-tête et l'implémentation dans un fichier séparé.
S'entraîner avec un défi
Utilisez le contenu de cette leçon pour résoudre un vrai problème. Chaque défi s'exécute dans le navigateur, avec des tests instantanés et une revue par l'IA.
Tous les défis