Comme nous l'avons déjà vu au chapitre 4, la bibliothèque <stdio> nous offre des fonctions qui effectuent l'entrée et la sortie des données. A côté des fonctions printf et scanf que nous connaissons déjà, nous y trouvons les deux fonctions puts et gets, spécialement conçues pour l'écriture et la lecture de chaînes de caractères.
- Affichage de chaînes de caractères
printf avec le spécificateur de format %s permet d'intégrer une chaîne de caractères dans une phrase.
En plus, le spécificateur %s permet l'indication de la largeur minimale du champ d'affichage. Dans ce champ, les données sont justifiées à droite. Si on indique une largeur minimale négative, la chaîne sera justifiée à gauche. Un nombre suivant un point indique la largeur maximale pour l'affichage.
Exemples
char NOM[] = "hello, world"; |
||
printf(":%s:", NOM); |
-> |
:hello, world: |
printf(":%5s:", NOM); |
-> |
:hello, world: |
printf(":%15s:", NOM); |
-> |
: hello, world: |
printf(":%-15s:", NOM); |
-> |
:hello, world : |
printf(":%.5s:", NOM); |
-> |
:hello: |
puts est idéale pour écrire une chaîne constante ou le contenu d'une variable dans une ligne isolée.
Syntaxe: |
puts(<Chaîne> ) |
Effet: |
puts écrit la chaîne de caractères désignée par <Chaîne> sur stdout et provoque un retour à la ligne. En pratique, |
puts(TXT); est équivalent à printf("%s\n",TXT); |
Exemples
char TEXTE[] = "Voici une première ligne."; puts(TEXTE); puts("Voici une deuxième ligne.");
- Lecture de chaînes de caractères
scanf avec le spécificateur %s permet de lire un mot isolé à l'intérieur d'une suite de données du même ou d'un autre type.
Effet: |
scanf avec le spécificateur %s lit un mot du fichier d'entrée standard stdin et le mémorise à l'adresse qui est associée à %s. |
Exemple
char LIEU[25]; int JOUR, MOIS, ANNEE; printf("Entrez lieu et date de naissance : \n"); scanf("%s %d %d %d", LIEU, &JOUR, &MOIS, &ANNEE);
Remarques importantes
- La fonction scanf a besoin des adresses de ses arguments:
* Les noms des variables numériques (int, char, long, float, ...) doivent être marqués par le symbole '&' (voir chap 4.4.).
* Comme le nom d'une chaîne de caractères est le représentant de l'adresse du premier caractère de la chaîne, il ne doit pas être précédé de l'opérateur adresse '&' !
- La fonction scanf avec plusieurs arguments présuppose que l'utilisateur connaisse exactement le nombre et l'ordre des données à introduire! Ainsi, l'utilisation de scanf pour la lecture de chaînes de caractères est seulement conseillée si on est forcé de lire un nombre fixé de mots en une fois.
gets est idéal pour lire une ou plusieurs lignes de texte (p.ex. des phrases) terminées par un retour à la ligne.
Syntaxe: |
gets( <Chaîne> ) |
Effet: |
gets lit une ligne de de caractères de stdin et la copie à l'adresse indiquée par <Chaîne>. Le retour à la ligne final est remplacé par le symbole de fin de chaîne '\0'. |
Exemple
int MAXI = 1000; char LIGNE[MAXI]; gets(LIGNE);Retour Suite Index