• Aucun résultat trouvé

Les Chaînes de Caractères

N/A
N/A
Protected

Academic year: 2022

Partager "Les Chaînes de Caractères"

Copied!
9
0
0

Texte intégral

(1)

Algorithmique et Langage C

www.polytech.unice.fr/žvg/index-xidian.html

Granet Vincent - [email protected]

Xi’an - Octobre 2019 - Avril 2020

(2)

Les Chaînes de Caractères

(3)

Introduction

Définition

Une chaîne de caractères est unesuite, éventuellement vide, de carac- tères

Type Chaîne

Certains langages de programmation définissent untypepour les représenter, comme par exemple le langage Java avec le typeString, mais d’autres langages, comme le langage C, ne définissent pas de type spécifique pour les représenter.

son

(4)

Constantes littérales

Les constantes chaînes de caractères sont parenthésées par un délimiteur particulier, bien souvent le guillemet,".

"bonjour à tous"

"" //chaîne vide

"a" //chaîne avec le caractère a. Différent du caractère 'a'

"1" //chaîne avec le caractère 1. Différent de l'entier 1

"le délimiteur \" d'une chaîne"

En C, les caractères spéciaux'\n', '\t','\v',etc. peuvent faire partie d’une chaîne de caractères.

"\thello !\n"

son

(5)

Opérateurs et Fonctions

Les langages de programmation qui possèdent un type « chaîne de caractères » proposent desopérateursde manipulation des chaînes de caractères. Par exemple, bien souvent l’opérateur+définit l’opération de concaténation de deux chaînes.

//Exemple en Java String s = "Bonjour";

s = s + " à tous !"; //s = "Bonjour à tous !"

Les langages qui ne définissent pas de type chaîne de caractères, comme le langage C, ne proposent pas d’opérateur, mais desfonctions.

//Exemple en C

i n t lg = strlen("Bonjour à tous !");

//lg == 16

son

(6)

Les chaînes de caractères en C

Pas de type « chaîne de caractères ». Une chaîne est un tableau de caractères terminé par un caractère de fin'\0'.

c h a r s1[10] = { 'b','o','n','j','o','u','r','\0' };

c h a r s2[] = { 'b','o','n','j','o','u','r','\0' };

c h a r s3[10] = "bonjour";

c h a r s4[] = "bonjour";

printf("%lu\n", s i z e o f "bonjour"); // 8 printf("%lu\n", s i z e o f s1); // 10 printf("%lu\n", s i z e o f s2); // 8 printf("%lu\n", s i z e o f s3); // 10 printf("%lu\n", s i z e o f s4); // 8

son

(7)

Les chaînes de caractères en C

Le compilateur C ajoute automatiquement le caractère'\0' à la fin d’une constante littérale.

Ne pas oublier ce caractère'\0'quand vous créez une chaîne de caractères.

La bibliothèque C (libc) propose de nombreuses fonctions de manipulation des chaînes de caractères.

#include <string.h>

Toutes ces fonctions ne gèrent pasl’allocation d’espace mémoire (saufstrdup).

son

(8)

Exemples

/

Antécédent : s une chaîne de caractères Rôle : renvoie la longueur de la chaîne s /

i n t strlen(c o n s t c h a r s[]) { i n t i=0;

w h i l e (s[i]!='\0') i++;

r e t u r n i;

} son

(9)

Exemples

/ Antécédent : s2 chaîne à copier dans s1 Conséquent : s1 == s2

Rôle : copie la chaîne s2 dans la chaîne s1 /

v o i d strcpy(c h a r s1[], c o n s t c h a r s2[]) { i n t i=0;

w h i l e ((s1[i]=s2[i]) != '\0')

i++;

} ....

c h a r str1[10], str2[4];

strcpy(str1, "bonjour"); //str1 == "bonjour"

strcpy(str2, "bonjour"); //problème !!!

strcpy("bonjour", "hello"); //gros problème !!!

son

Références

Documents relatifs

Notion de dépendance temporelle: à l’exécution d’un programme impératif, si plusieurs évaluations sont possibles, alors le résultat final dépendra, au cas où les sous

Dans un langage de programmation sans orientée objet (Pascal, C, … ), il est interdit d'utiliser le même nom pour deux sous-programmes différents. Les langages C#, C++, JAVA,

Tout cela, et parfois une de ces pyramides d’un noir plombé qui s’élèvent sur les puits de pétrole, composent le paysage désespéré qui m’entoure, et que ne connaissent que

On vous demande de préciser le contenu des fichiers manipulés (on demande de distinguer deux types de fichier, les fichiers textes et les fichiers binaires). On vous demande

• faire marcher l’ordinateur avec ses périphériques (écran, disques, clavier, souris, utilisateurs, réseau, …). • les OS sont d’une complexité extrême (~100 millions de

• mots clés en Python (déjà vus en rouge).

• un interface en français se trouve dans l’extension French Language Pack, en chinois dans Chinese language Pack. • on charge les extensions: Python, Python for VSCode,

Ecrire un programme pour trouver les jours où on aurait dû acheter et vendre cette action pour avoir obtenu un gain