• Aucun résultat trouvé

Les chaînes de caractères sont des tableaux de caractères, mais le dernier caractère doit être le délimiteur de fin de chaîne ’\0’

N/A
N/A
Protected

Academic year: 2022

Partager "Les chaînes de caractères sont des tableaux de caractères, mais le dernier caractère doit être le délimiteur de fin de chaîne ’\0’"

Copied!
1
0
0

Texte intégral

(1)

Université de Nice-Sophia Antipolis avril 2022

Polytech/Xidian Durée: 1h30

Chaînes de caractères Travaux Pratiques – Séance no7

En C, il n’existe pas de type chaîne de caractères spécifique. Les chaînes de caractères sont des tableaux de caractères, mais le dernier caractère doit être le délimiteur de fin de chaîne

’\0’. Ainsi, sizeof "abcdefghi"est égal à 10 et non pas 9.

Une constante chaîne de caractères peut être définie par une suite de caractères délimitée par des guillemets, ou à l’aide d’une initialisation classique de tableau. Le caractère’\0’est automatiquement ajouté à la fin d’une constante littérale. Le caractère \<saut de ligne>

permet d’écrire la constante sur plusieurs lignes.

char str1 [10] = {’a’, ’b’, ’c’, ’\0 ’};

char str2 [10] = "abc";

char str3 [] = "abc";

"Une chaîne de caractères "

"" /* une chaîne vide */

" \

?" /* une chaîne sur plusieurs lignes */

Contrairement à d’autres langages, il n’y a aucun opérateur spécifique pour les chaînes de caractères en C. La bibliothèque C contient de nombreuses fonctions de manipulation de chaînes de caractères. Les prototypes des fonctions sont définis dansstring.h. Faites unman string.h pour avoir une idée précise. Il est important de noter que ces fonctions ne gèrent pas l’allocation de la mémoire pour les caractères de chaînes (saufstrdup).

1) Écrivez et testez le programme suivant :

#i n c l u d e <stdlib .h>

#i n c l u d e <stdio .h>

#i n c l u d e <string .h>

i n t main (void) {

char str1 [10] = {’c’, ’o’, ’t’, ’\0 ’};

char str2 [] = " abri ";

printf ("(%s) : (%s)\n", str1 , str2 );

printf ("(%c) : (%c)\n", str1 [1] , str2 [2]);

printf ("(% lu) : (% lu )\n", s i z e o f str1 , s i z e o f "abc");

printf ("(% zd) : (% zd )\n", strlen ( str1 ), strlen ( str2 ));

printf ("(%s)\n", strcat (str2 , str1 ));

r e t u r n EXIT_SUCCESS ; }

2) Récrivez les fonctionsstrlenetstrchr. 3) Récrivez les fonctionsstrcpyetstrcat.

4) Écrivez une fonctioncomparequi prend deux chaînes de caractères, s1, et s2, en paramètre et les compare selon l’ordre lexicographique. La fonction renverra :

1

— une valeur négative, si s1 est inférieure à s2 ;

— 0, si s1 est egale à s2 ;

— une valeur positive, si s1 est supérieure à s2.

5) Comment récrire les fonctions précédentes afin qu’elles puissent faire des vérifications sur la taille des chaînes (par exemple, pourstrcpy, que le premier paramètre a assez de place pour accueillir tous les caractères du deuxième) ?

6) Sans utiliser de fonctions de la bibliothèque C, écrivez en C la procéduretrimqui prend en paramètre deux chaînes de caractèress1ets2.trimconstruit la chaînes2à partir des1dans laquelle tous les caractères espaces (e.g.’ ’,’\t’, ...) de début et de fin ont été supprimés. Si la chaînes1est" bonne année 2020\t ", la chaîne résultats2sera égale à"bonne année 2020". Attention à bien penser à tous les cas possibles.

2

Références

Documents relatifs

Lecture fichier binaire : données stockées dans une chaîne de caractères... 3.2 str : chaîne d’octets (pas

Écrire un programme qui permette à l'utilisateur de saisir une chaîne de caractères et qui affiche ensuite la taille de la chaîne entrée. On pourra également afficher de nouveau

• Le traitement de liste est souvent réalisé à l’aide de fonctions récursives (il n’existe pas d’équivalent fonctionnel direct des boucles). • Calcul de la longueur

Il faut donc faire défiler le message dans buffer, c'est à dire copier message dans buffer à partir d'une position donnée, afficher son contenu pendant un instant donné

Une pile est représentée par une structure regroupant un entier, pour le sommet, et un tableau de MAX_PILE éléments (ici, des caractères). II.1- En utilisant la

Dans la liste des périodes possibles, on trouve avec une période telle que abcde les périodes bcdea, cdeab, deabc, eabcd ; d’où 10 périodes multiples de 2439, compatibles avec 41

En C++, les chaînes de caractères sont stockées dans des variables de type string : string prenom = &#34;Robert&#34;; // string pour les chaînes de caractères.. Les chaînes

Pour accéder à un élément, dans une itération donnée, on le fait via le registre SI...