Exercice langage C: Les chaînes de caractères
Rédigé par GC Team, Publié le 19 Mars 2012, Mise à jour le Dimanche, 06 Novembre 2022 23:48Exercices sur les chaînes de caractères
1. Initialisation de chaîne de caractère :
Lesquelles des chaînes suivantes sont initialisées correctement ?
Corrigez les déclarations fausses et indiquez pour chaque chaîne de caractères le nombre d'octets qui sera réservé en mémoire.
a) char a[ ] = "un\ndeux\ntrois\n" ;
b) char b[12] = "un deux trois" ;
c) char c[] = 'abcdefg' ;
d) char d[10] = 'x' ;
e) char e[5] = "cinq" ;
f ) char f[] = "Cette " "phrase" "est coupée";
g) char g[2] = { 'a', '\0' };
h) char h[4] = { 'a', 'b', 'c' } ;
i) char i[4] = "'o'"
a) char a[] = "un\ndeux\ntrois\n";
Déclaration correcte
Espace: 15 octets
b) char b[12] = "un deux trois";
Déclaration incorrecte:
la chaîne d'initialisation dépasse le bloc de mémoire réservé.
Correction: char b[14] = "un deux trois";
ou mieux: char b[] = "un deux trois";
Espace: 14 octets
c) char c[] = 'abcdefg';
Déclaration incorrecte: Les symboles ' et ‘ encadrent des caractères;
pour initialiser avec une chaîne de caractères, il faut utiliser les guillemets (ou indiquer une liste de caractères).
Correction: char c[] = "abcdefg";
Espace: 8 octets
d) char d[10] = 'x';
Déclaration incorrecte: Il faut utiliser une liste de caractères ou une chaîne pour l'initialisation
Correction: char d[10] = {'x', '\0'} ou mieux: char d[10] = "x";
Espace: 2 octets
e) char e[5] = "cinq";
Déclaration correcte
Espace: 5 octets
f) char f[] = "Cette ", "phrase", "est coupée";
Déclaration incorrecte
On ne peut affecter plusieurs chaînes séparées ainsi.
g) char g[2] = {'a', '\0'};
Déclaration correcte
Espace: 2 octets
h) char h[4] = {'a', 'b', 'c'};
Déclaration incorrecte: Dans une liste de caractères, il faut aussi indiquer le symbole de fin de chaîne. Correction: char h[4] = {'a', 'b', 'c', '\0'};
Espace: 4 octets
i) char i[4] = "'o'";
Déclaration correcte, mais d'une chaîne contenant les caractères '\'', 'o', '\'' et '\0'.
Espace: 4 octets