Comment lire une chaîne de caractères en C
Le langage C ne fournit pas de type de données chaîne de caractères réel. En C, une chaîne est émulée par un tableau de caractères se terminant par NULL. Un tel tableau peut être déclaré statiquement ou comme pointeur. Le C standard fournit de nombreuses fonctions pour manipuler les tableaux de caractères ou chaînes C. Cet article se concentre sur les fonctions lisant depuis le flux d'entrée et depuis les fichiers.
Étape 1
Comprenez les bases. Une chaîne C est un tableau de type char. Comme tout tableau C, le premier élément est à l'index 0, le dernier à « longueur - 1 ». Généralement, le compilateur insère NULL à la dernière position, donc la chaîne contient « longueur - 1 » éléments. NULL = 0x00 en entier, '\0' en char. Accès par l'opérateur « [] ». L'étape 2 illustre ces concepts.
Étape 2
Ajoutez la « directive d'inclusion » ci-dessous dans tout fichier source avant d'utiliser les fonctions de ce tutoriel :
#include <stdio.h>
Étape 3
Déclarez une chaîne C. Le code ci-dessous montre une déclaration statique et par pointeur :
// déclaration statique
char str[50] = {0}; // raccourci pour initialiser tous les éléments à 0
// str[49] est NULL
// str a capacité pour 48 chars
// déclaration par pointeur
char *pStr = NULL; // pas d'allocation mémoire
pStr = (char*)malloc(50); // fait par « malloc() »
Étape 4
Lisez des données dans une chaîne C avec « scanf() », qui lit une série de chaînes séparées par espaces depuis l'entrée standard et les place aux adresses des variables de référence appropriées, selon une « chaîne de format » :
int n;
printf("Entrez votre prénom et âge : ");
scanf("%s%d", str, &n);
// printf("Votre nom est %s et vous avez %d ans\n", str, n);
Étape 5
Mettez des données dans une chaîne C avec la plus simple fonction « gets() », qui lit depuis l'entrée standard dans une chaîne seulement :
printf("Entrez votre nom : ");
gets(str);
printf("Votre nom est %s\n", str);
Étape 6
Lisez des données de fichier dans une chaîne C avec « fscanf() » ; analogue à « scanf() » :
FILE* pFile;
pFile = fopen("monFichier.txt", "r"); // suppose fichier existant avec données
if (NULL != pFile) {
fscanf(pFile, "%s", str);
printf("Le premier mot du fichier est %s\n", str);
fclose(pFile);
}
Étape 7
Répétez l'étape 5 avec « fgets() », qui fonctionne comme « gets() » :
FILE* pFile;
pFile = fopen("monFichier.txt", "r");
if (NULL != pFile) {
fgets(pFile, str);
printf("Le premier mot du fichier est %s\n", str);
fclose(pFile);
}
Astuce
Pour en savoir plus sur ces fonctions, visitez le site C++ Reference (cplusplus.com).
Avertissement
N'essayez pas de compiler ce code. Il sert seulement à démontrer les fonctions. Ce n'est pas un programme cohérent et donnera des erreurs à la compilation.
