Exercices 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'"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
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 |