SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Programmation en langage C
Fahad R. Golra
Faculté des Sciences et Technologies
Université de Lorraine
Séance 4 – Pointeurs et Chaînes de caractères
2 24/11/2017
Pointeurs
Programmation en langage C, Université de Lorraine
• On utilise des pointeurs dans :
• La transmission des arguments par pointeurs (résultats de
retour)
• La manipulation des tableaux
• Les chaînes de caractères
• Les fichiers : FILE * aLire, * aCreer
• Etc.
3 24/11/2017
Pointeurs
Programmation en langage C, Université de Lorraine
• Un pointeur est une variable dont la valeur est une adresse
• Déclaration : type * identificateur ;
• PointeurSurEntier est une variable qui peut contenir l’adresse
mémoire d’une variable entière
• La valeur d’un pointeur étant une adresse, l’opérateur *
permet d’accéder à la valeur qui est à cette adresse
int *pointeurSurEntier;
int unEntier, *pointeurSurEntier = &unEntier;
int unEntier=5, unAutre, *pointeur = &unEntier;
unAutre = *pointeur /*unAutre prend la valeur 5*/
4 24/11/2017
Operateurs & et *
Programmation en langage C, Université de Lorraine
• Adresse de : &
• Syntaxe : &variable , donne l'adresse mémoire de la variable
• Dont l'adresse est : *
• Syntaxe *expression : donne le mot mémoire dont l'adresse
est donnée par l'expression
int i, adr;
adr = &i;
int i, *adr;
i=1;
adr=&i;
printf("%d", *adr);
Affiche "1"
5 24/11/2017
Exemple : Variable
Programmation en langage C, Université de Lorraine
• On	définit	ainsi	une	variable	
a associée	à	un	
emplacement	mémoire	
• Pour	instancier	a,	il	suffit	
d’affecter	une	valeur	à	a
int a;
a= 5;
6 24/11/2017
Exemple : Pointeurs
Programmation en langage C, Université de Lorraine
• On	définit	une	pointeur	p qui	
va	contenir	une	adresse :	
l’adresse	de	l’objet	que	va	
pointer	la	pointeur	p,	ici	a.
• On	ne	peut	affecter	à	p
qu’une	adresse
int a;
int *p;
p = &a;
*p = 6;
De cette manière p va
pointer sur l’objet que
désigne l’identificateur a.
Ca va instancier l’objet que
pointe p
Quelle valeur est maintenant associée à a ? 6
7 24/11/2017
Rappelez-vous !!! Fonctions
Programmation en langage C, Université de Lorraine
# include <stdio.h>
void permute(int*, int*);
int main(void)
{
int x = 3, y = 4;
permute (&x, &y);
printf("x = %dn", x);
printf("y = %dn", y);
return 0;
}
void permute(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
# include <stdio.h>
void permute(int, int);
int main(void)
{
int x = 3, y = 4;
permute (x, y);
printf("x = %dn", x);
printf("y = %dn", y);
return 0;
}
void permute(int a, int b)
{
int temp;
temp = a;
a = b;
b = temp;
}
Passage par référence Passage par valeur
8 24/11/2017
Chaîne de caractères
Programmation en langage C, Université de Lorraine
• On	définit	ainsi	un	pointeur	
"chaine"	qui	va	pointer	sur	
une	zone	mémoire	de	8	
octets	consécutifs	(nous	
supposons	ici	qu’un	
caractère	ne	nécessite	qu’un	
octet	pour	son	codage).	
char *chaine="bonjour";
*(chaine+1) caractère ‘o’
*(chaine+2) caractère ‘n’
*(chaine+3) caractère ‘j’
*(chaine+4) caractère ‘o’
*chaine caractère ‘b’
*(chaine+5) caractère ‘u’
*(chaine+6) caractère ‘r’
*(chaine+7) caractère ‘0’
le caractère nul ‘0’ termine toute
chaîne de caractère. C’est la raison
pour laquelle la chaîne de 7 caractères
˝bonjour˝ est représentée en mémoire
par une zone consécutive de 8 octets.
9 24/11/2017
Chaîne de caractères
Programmation en langage C, Université de Lorraine
• On	définit	ainsi	un	pointeur	
"chaine"	qui	va	pointer	sur	
une	zone	mémoire	de	8	
octets	consécutifs	(nous	
supposons	ici	qu’un	
caractère	ne	nécessite	qu’un	
octet	pour	son	codage).	
char *chaine="bonjour";
| 'b' | 'o' | 'n' | 'j' | 'o' | 'u' | 'r' |'0'|
|_____|_____|_____|_____|_____|_____|_____|____|
Le ‘0’ marque la fin de la chaîne de caractères
10 24/11/2017
Exemple 1– Chaînes de caractères
Programmation en langage C, Université de Lorraine
• Un programme qui initialise une variable pointeur adr qui
pointe sur la chaîne de caractères "bonjour" et qui affiche à
l’écran chaque caractère de "bonjour".
#include <stdio.h>
int main(void)
{
char *adr = "bonjour";
while (*adr)
{
printf (" %cn", *adr);
adr++;
}
return 0;
}
11 24/11/2017
Chaîne de caractères (Explicit vs. Implicit)
Programmation en langage C, Université de Lorraine
• Lorsque	l’on	déclare	une	chaîne	de	n caractères	à	l’aide	d’un	
pointeur	explicite,	le	compilateur	réserve	un	emplacement	
mémoire	de	n+1 octets	exactement.
• Il	est	possible	de	déclarer	une	chaîne	de	n caractères	à	l’aide	d’un	
pointeur	implicit :
char *chaine="bonjour"; 8 octets
char chaine[8]="bonjour";
12 24/11/2017
Sur-dimmensionner une chaîne de caractères
Programmation en langage C, Université de Lorraine
• Il est possible de sur-dimmensionner une variable chaîne de
caractères ainsi :
• ch est un pointeur implicite qui pointe sur une zone mémoire
de 20 octets.
• Les 8 premiers octets sont initialisés avec les
caractères :{‘b’,’o’,’n’,’j’,’o’,’u’,’r’,’0’}.
• Les 12 autres octets de ch sont arbitraires.
• L’intérêt de sur-dimmensionner une chaîne de caractères sera vu
lorsque l’on traitera des fonctions standards de le bibliothèque de
chaîne de caractères <string.h>.
char ch[20]="bonjour";
13 24/11/2017
Chaîne de caractères explicit
Programmation en langage C, Université de Lorraine
• À la différence d'un tableau,
les chaînes de caractères
respectent une convention :
se terminer par le caractère
nul, noté '0' (antislash-zero).
• Ainsi, pour construire une
chaîne de caractères « à la
main », il ne faut pas oublier
ce caractère final.
#include <stdio.h>
#include <string.h>
int main(void)
{
char chiffres[11];
int i;
for (i = 0 ; i < 10 ; i++)
chiffres [i] = '0' +i;
chiffres[10] = '0';
printf("chaine obtenue : %s",
chiffres);
return 0;
}
14 24/11/2017
Chaîne de caractères explicit
Programmation en langage C, Université de Lorraine
• Il	est	possible	de	modifier	
une	chaîne	de	caractères	
quelle	que	soit	la	manière	
dont	on	la	déclare .
• Dans	cet	exemple	on	a	crée	
une	chaîne	formée	des	10	
caractères	correspondant	
aux	chiffres	de	0	à	9 .
#include <stdio.h>
#include <string.h>
int main(void)
{
char chiffres[11];
int i;
for (i = 0 ; i < 10 ; i++)
chiffres [i] = '0' +i;
chiffres[10] = '0';
printf("chaine obtenue : %s",
chiffres);
return 0;
}
15 24/11/2017
Fonctions principales
Programmation en langage C, Université de Lorraine
• Catégories importantes de fonctions pour les chaînes de
caractères :
• entrées-sorties standard de chaînes
• tailles de chaînes
• copie de chaînes
• concaténation de chaînes
• comparaison de chaînes
• recherche de caractères ou de sous-chaines dans une chaîne
• conversion de chaîne en nombre.
16 24/11/2017
Entrées-sorties standard de chaînes
Programmation en langage C, Université de Lorraine
• Lecture au clavier d’une chaîne de caractères
• scanf
• gets
• Pour	imprimer	une	chaîne	de	caractères	à	l’écran
• printf
• puts
17 24/11/2017
Entrées-sorties – scanf / printf
Programmation en langage C, Université de Lorraine
• scanf("%s", char *chaine)
• Va saisir une chaîne
jusqu’à un séparateur.
• printf("%s", char *chaine)
• Va afficher à l’écran la
chaîne.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *ch;
printf("Entrez un phrase : ");
scanf("%s",ch);
printf("Le phrase est : %s", ch);
return 0;
}
18 24/11/2017
Entrées-sorties – gets/ puts
Programmation en langage C, Université de Lorraine
• gets(char *chaine)
• Va saisir une chaîne
jusqu’au retour de chariot
(‘0’)
• puts(char *chaine)
• Va afficher	à	l’écran	la	
chaîne.
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *ch;
printf("Entrez un phrase : ");
gets(ch);
printf("Le phrase est : ");
puts(ch);
return 0;
}
19 24/11/2017
La fonction strlen
Programmation en langage C, Université de Lorraine
• La fonction strlen calcule le
nombre de caractères de la
chaîne passée en
paramètre (le caractère de
fin de chaîne : ‘0’) n’est pas
pris en compte.
size_t strlen(const char *s);
#include <stdio.h>
#include <string.h>
int main(void)
{
char *chaine1 = "bonjour";
char chaine2[10] = "salut";
int i = strlen(chaine1);
int j = strlen(chaine2);
printf("chaine1 : %sn", chaine1);
printf("taille chaine1 : %dn", i);
printf("chaine2 : %sn", chaine2);
printf("taille chaine2 : %dn", j);
return 0;
}
20 24/11/2017
La fonction strcpy
Programmation en langage C, Université de Lorraine
• La fonction strcpy copie le
contenu de la chaîne source
dans la chaîne but.
• Retourne	l'adresse	de	but.
char * strcpy (char *but, char *source)
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch1[20];
char ch2[10] = "bonjour";
char *ch3 = "salut";
strcpy(ch1, ch3);
printf("ch1 : %sn", ch1);
strcpy(ch1, ch2);
printf("ch1 : %sn", ch1);
strcpy(ch1, "hello");
printf("ch1 : %sn", ch1);
return 0;
}
21 24/11/2017
La fonction strcpy -- Attention !!!
Programmation en langage C, Université de Lorraine
• La	fonction	strcpy n’effectue	
aucun	contrôle	sur	les	
longueurs	des	chaînes	source	
et	but.	C’est	le	rôle	du	
programmeur	de	faire	
attention	à	ce	qu’il	fait .
• ch contient	6	octets	et	la	
chaîne	"bonjour" nécessite	8	
octets	pour		son	stockage :	
donc	le	strcpy va	écraser	2	
octets	en	fin	de	tableau	ou	
lancer	une	erreur.
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch[6] = "hello";
strcpy(ch, "bonjour");
printf("ch : %sn", ch);
return 0;
}
22 24/11/2017
La fonction strcat
Programmation en langage C, Université de Lorraine
• La	fonction	strcat permet	de	
concaténer	deux	chaînes	de	
caractères,	i.e.,	de	les	mettre	
bout	à	bout.
char *strcat ( char *but, char *source)
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch[50] = "bonjour";
char *per = "monsieur";
printf("avant : %sn", ch);
strcat(ch, per);
printf("apres : %sn", ch);
return 0;
}
23 24/11/2017
La fonction strcat – Attention!!!
Programmation en langage C, Université de Lorraine
• Aucun contrôle de longueur
n’est réalisé par la fonction
strcat :
• il faut que l’emplacement
réservé pour la première
chaîne soit suffisant pour
y recevoir la partie à lui
concaténer.
#include <stdio.h>
#include <string.h>
int main(void)
{
char ch[10]="bonjour";
char *per= "monsieur";
strcat(ch,per) ;
printf ("ch : %sn", ch);
return 0;
}
24 24/11/2017
La fonction strcmp
Programmation en langage C, Université de Lorraine
• La	fonction	strcmp permet	
de	comparer	deux	chaînes	
de	caractères	dans	l’ordre	
lexicographique.
• Retourne :	
• négative si	chaine1	arrive	
avant	chaine2	
• positive si	chaine1	arrive	
après	chaine2	
• nulle si	les	deux	chaînes	
sont	identiques.	
int strcmp (char *chaine1, *chaine2)
#include <stdio.h>
#include <string.h>
int main(void)
{
int res;
res = strcmp("bonjour", "monsieur");
printf ("Comparaison : %dn", res);
res = strcmp("bonjour", "bonjour");
printf ("Comparaison : %dn", res);
res = strcmp("monsieur", "bonjour");
printf ("Comparaison : %dn", res);
return 0;
}
25 24/11/2017
La fonction strchr
Programmation en langage C, Université de Lorraine
• La fonction strchr retourne
l’adresse de la première
occurrence du caractère
dans la chaîne, NULL si le
caractère n’y est pas.
char * strchr (char *chaine, char c)
#include <stdio.h>
#include <string.h>
int main(void)
{
char *ch ="bonjour";
ch=strchr (ch, 'o');
printf("Ch : %s", ch);
return 0;
}
26 24/11/2017
La fonction strchr - Exemple
Programmation en langage C, Université de Lorraine
• ad contient l’adresse du
premier ‘e’ dans ch
• si ch contient le caractère 'e'
bloc1sera exécuté et sinon
c’est bloc2 qui est exécuté.
char * strchr (char *chaine, char c)
#include <stdio.h>
#include <string.h>
int main(void)
{
char *ch="bonjour monsieur";
char *ad = strchr(ch, 'e');
if(ad)
printf("ch contient en");
else
printf("ch ne contient pas en");
return 0;
}
27 24/11/2017
La fonction strstr
Programmation en langage C, Université de Lorraine
• La fonction strstr permet de
rechercher la première
occurrence d’une chaîne
donnée (sous-chaîne) dans
une autre.
• Retourne	l'adresse	de	la	
première	occurrence	
complète	de	la	sous-chaîne	
cherchée,	sinon	NULL.
char *strstr (char *ch1, char *ch2)
#include <stdio.h>
#include <string.h>
int main(void)
{
char *ch ="bonjour monsieur";
char *per="monsieur";
ch=strstr(ch, per);
printf("Ch : %s", ch);
return 0;
}
28 24/11/2017
La fonction strpbrk
Programmation en langage C, Université de Lorraine
• La fonction strpbrk permet
de rechercher dans une
chaîne la première
occurrence d’un des
caractères appartenant à un
ensemble.
• Retourne l'adresse de la
première occurrence dans
chaine1 de l’un des
caractères de chaine2, NULL
si inexistence.
char *strpbrk (char *ch1, char *ch2)
#include <stdio.h>
#include <string.h>
int main(void)
{
char *ch ="bonjour monsieur";
char *per="nancy";
ch=strpbrk(ch, per) ;
printf("Ch : %s", ch);
return 0;
}
29 24/11/2017
Conversion de chaînes en nombres
Programmation en langage C, Université de Lorraine
• Les	trois	fonctions	les	plus	
utilisées	sont :
1. atof - une chaîne en double
2. atoi - une chaîne en int
3. atol - une chaîne en long
int
• La	librairie	à	inclure	est	
stdlib.h
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
double d;
int i;
long l;
char *chd = "-3.141592";
char *chi = "-122";
char *chl = "234567890";
d = atof(chd);
i = atoi(chi);
l = atol(chl);
printf("chd : %lfn", d);
printf("chi : %dn", i);
printf("chl : %ldn", l);
return 0;
}

Contenu connexe

Tendances

Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#Youness Boukouchi
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Aziz Darouichi
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Aziz Darouichi
 
Cours langage c
Cours langage cCours langage c
Cours langage ccoursuniv
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage cEbrima NJIE
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage Ccoursuniv
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage cDaoua Lotfi
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieLoic Yon
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage ccoursuniv
 
C++11 en 12 exemples simples
C++11 en 12 exemples simplesC++11 en 12 exemples simples
C++11 en 12 exemples simplesPethrvs
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfacesAziz Darouichi
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Aziz Darouichi
 

Tendances (20)

Les fondamentaux de langage C#
Les fondamentaux de langage C#Les fondamentaux de langage C#
Les fondamentaux de langage C#
 
Chapitre2 prog dsplf3
Chapitre2 prog dsplf3Chapitre2 prog dsplf3
Chapitre2 prog dsplf3
 
Chap1V2019: Cours en C++
Chap1V2019: Cours en C++Chap1V2019: Cours en C++
Chap1V2019: Cours en C++
 
Cours langage-c
Cours langage-cCours langage-c
Cours langage-c
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Cours langage c
Cours langage cCours langage c
Cours langage c
 
Tp1 compte rendu en langage c
Tp1 compte rendu en langage cTp1 compte rendu en langage c
Tp1 compte rendu en langage c
 
Corrigés exercices langage C
Corrigés exercices langage CCorrigés exercices langage C
Corrigés exercices langage C
 
Le langage C
Le langage CLe langage C
Le langage C
 
Exercices en langage c
Exercices en langage cExercices en langage c
Exercices en langage c
 
Cours de c
Cours de cCours de c
Cours de c
 
Chap1: Cours en C++
Chap1: Cours en C++Chap1: Cours en C++
Chap1: Cours en C++
 
C1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partieC1 - Langage C - ISIMA - Première partie
C1 - Langage C - ISIMA - Première partie
 
Ch02
Ch02Ch02
Ch02
 
Corrigé langage c
Corrigé langage cCorrigé langage c
Corrigé langage c
 
C++11 en 12 exemples simples
C++11 en 12 exemples simplesC++11 en 12 exemples simples
C++11 en 12 exemples simples
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
Chap2fonctionscpp
Chap2fonctionscppChap2fonctionscpp
Chap2fonctionscpp
 
Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019Chapitre2fonctionscppv2019
Chapitre2fonctionscppv2019
 
Polymorphisme
PolymorphismePolymorphisme
Polymorphisme
 

Similaire à Seance 4- Programmation en langage C

cours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationcours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationkamalomari2
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptxolfaharrabi2
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMALoic Yon
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCSiratiSoufiane
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfFadouaBouafifSamoud
 
SdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoireSdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoireAlexandru Radovici
 
Formation python
Formation pythonFormation python
Formation pythonj_lipaz
 
Introduction au langage python notion de base
Introduction au langage python notion de baseIntroduction au langage python notion de base
Introduction au langage python notion de basemohamedAitomar1
 
Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)mohamedAitomar1
 
02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSSAyoubElmrabet6
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)salah fenni
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfFadouaBouafifSamoud
 
Cours programmation en langage C.pdf
Cours  programmation  en  langage  C.pdfCours  programmation  en  langage  C.pdf
Cours programmation en langage C.pdfkhalidmoussaid4
 
Chapitre 10 - Les chaines de characteres.pdf
Chapitre 10 - Les chaines de characteres.pdfChapitre 10 - Les chaines de characteres.pdf
Chapitre 10 - Les chaines de characteres.pdfShiniGami0o0
 

Similaire à Seance 4- Programmation en langage C (20)

cours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'applicationcours lanagage c avec des exemples d'application
cours lanagage c avec des exemples d'application
 
1763685
17636851763685
1763685
 
Chap 1 Initiation.pptx
Chap 1 Initiation.pptxChap 1 Initiation.pptx
Chap 1 Initiation.pptx
 
Cours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMACours de C++ / Tronc commun deuxième année ISIMA
Cours de C++ / Tronc commun deuxième année ISIMA
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CPP PTT DE CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
 
Formation python
Formation pythonFormation python
Formation python
 
ch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdfch7_les chaines de caractères.pdf
ch7_les chaines de caractères.pdf
 
Chap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptxChap1_Entrees_Sorties.pptx
Chap1_Entrees_Sorties.pptx
 
SdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoireSdE 2 - Langage C, Allocation de memoire
SdE 2 - Langage C, Allocation de memoire
 
POO-chapitre2.pptx
POO-chapitre2.pptxPOO-chapitre2.pptx
POO-chapitre2.pptx
 
Formation python
Formation pythonFormation python
Formation python
 
Introduction au langage python notion de base
Introduction au langage python notion de baseIntroduction au langage python notion de base
Introduction au langage python notion de base
 
Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)Introduction au langage python (Notion de base)
Introduction au langage python (Notion de base)
 
02 Spécificité du C++ COURS SYS SYSSSSSS
02 Spécificité du C++  COURS SYS SYSSSSSS02 Spécificité du C++  COURS SYS SYSSSSSS
02 Spécificité du C++ COURS SYS SYSSSSSS
 
Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)Algorithmique et programmation en Pascal (résumé)
Algorithmique et programmation en Pascal (résumé)
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Cours programmation en langage C.pdf
Cours  programmation  en  langage  C.pdfCours  programmation  en  langage  C.pdf
Cours programmation en langage C.pdf
 
Theme 6
Theme 6Theme 6
Theme 6
 
Chapitre 10 - Les chaines de characteres.pdf
Chapitre 10 - Les chaines de characteres.pdfChapitre 10 - Les chaines de characteres.pdf
Chapitre 10 - Les chaines de characteres.pdf
 

Plus de Fahad Golra

Tutorial 4 - Basics of Digital Photography
Tutorial 4 - Basics of Digital PhotographyTutorial 4 - Basics of Digital Photography
Tutorial 4 - Basics of Digital PhotographyFahad Golra
 
Tutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital PhotographyTutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital PhotographyFahad Golra
 
Tutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital PhotographyTutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital PhotographyFahad Golra
 
Tutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital PhotographyTutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital PhotographyFahad Golra
 
Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2Fahad Golra
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Fahad Golra
 
Lecture 8 Enterprise Java Beans (EJB)
Lecture 8  Enterprise Java Beans (EJB)Lecture 8  Enterprise Java Beans (EJB)
Lecture 8 Enterprise Java Beans (EJB)Fahad Golra
 
Lecture 7 Web Services JAX-WS & JAX-RS
Lecture 7   Web Services JAX-WS & JAX-RSLecture 7   Web Services JAX-WS & JAX-RS
Lecture 7 Web Services JAX-WS & JAX-RSFahad Golra
 
Lecture 6 Web Sockets
Lecture 6   Web SocketsLecture 6   Web Sockets
Lecture 6 Web SocketsFahad Golra
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, mavenFahad Golra
 
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)Fahad Golra
 
Lecture 2: Servlets
Lecture 2:  ServletsLecture 2:  Servlets
Lecture 2: ServletsFahad Golra
 
Lecture 1: Introduction to JEE
Lecture 1:  Introduction to JEELecture 1:  Introduction to JEE
Lecture 1: Introduction to JEEFahad Golra
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session ManagementFahad Golra
 
Deviation Detection in Process Enactment
Deviation Detection in Process EnactmentDeviation Detection in Process Enactment
Deviation Detection in Process EnactmentFahad Golra
 
Meta l metacase tools & possibilities
Meta l metacase tools & possibilitiesMeta l metacase tools & possibilities
Meta l metacase tools & possibilitiesFahad Golra
 

Plus de Fahad Golra (16)

Tutorial 4 - Basics of Digital Photography
Tutorial 4 - Basics of Digital PhotographyTutorial 4 - Basics of Digital Photography
Tutorial 4 - Basics of Digital Photography
 
Tutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital PhotographyTutorial 3 - Basics of Digital Photography
Tutorial 3 - Basics of Digital Photography
 
Tutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital PhotographyTutorial 2 - Basics of Digital Photography
Tutorial 2 - Basics of Digital Photography
 
Tutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital PhotographyTutorial 1 - Basics of Digital Photography
Tutorial 1 - Basics of Digital Photography
 
Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2Lecture 9 - Java Persistence, JPA 2
Lecture 9 - Java Persistence, JPA 2
 
Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)Lecture 10 - Java Server Faces (JSF)
Lecture 10 - Java Server Faces (JSF)
 
Lecture 8 Enterprise Java Beans (EJB)
Lecture 8  Enterprise Java Beans (EJB)Lecture 8  Enterprise Java Beans (EJB)
Lecture 8 Enterprise Java Beans (EJB)
 
Lecture 7 Web Services JAX-WS & JAX-RS
Lecture 7   Web Services JAX-WS & JAX-RSLecture 7   Web Services JAX-WS & JAX-RS
Lecture 7 Web Services JAX-WS & JAX-RS
 
Lecture 6 Web Sockets
Lecture 6   Web SocketsLecture 6   Web Sockets
Lecture 6 Web Sockets
 
Lecture 5 JSTL, custom tags, maven
Lecture 5   JSTL, custom tags, mavenLecture 5   JSTL, custom tags, maven
Lecture 5 JSTL, custom tags, maven
 
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)Lecture 4:  JavaServer Pages (JSP) & Expression Language (EL)
Lecture 4: JavaServer Pages (JSP) & Expression Language (EL)
 
Lecture 2: Servlets
Lecture 2:  ServletsLecture 2:  Servlets
Lecture 2: Servlets
 
Lecture 1: Introduction to JEE
Lecture 1:  Introduction to JEELecture 1:  Introduction to JEE
Lecture 1: Introduction to JEE
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session Management
 
Deviation Detection in Process Enactment
Deviation Detection in Process EnactmentDeviation Detection in Process Enactment
Deviation Detection in Process Enactment
 
Meta l metacase tools & possibilities
Meta l metacase tools & possibilitiesMeta l metacase tools & possibilities
Meta l metacase tools & possibilities
 

Dernier

Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Gabriel Gay-Para
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film françaisTxaruka
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxMartin M Flynn
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 37
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfRiDaHAziz
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...NaimDoumissi
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 37
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfRiDaHAziz
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre françaisTxaruka
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfSylvianeBachy
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationpapediallo3
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxJCAC
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursStagiaireLearningmat
 

Dernier (20)

Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)Faut-il avoir peur de la technique ? (G. Gay-Para)
Faut-il avoir peur de la technique ? (G. Gay-Para)
 
Pas de vagues. pptx Film français
Pas de vagues.  pptx   Film     françaisPas de vagues.  pptx   Film     français
Pas de vagues. pptx Film français
 
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptxDIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
DIGNITAS INFINITA - DIGNITÉ HUMAINE; déclaration du dicastère .pptx
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
Bibdoc 2024 - L’Éducation aux Médias et à l’Information face à l’intelligence...
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
PIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdfPIE-A2-P 5- Supports stagiaires.pptx.pdf
PIE-A2-P 5- Supports stagiaires.pptx.pdf
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
Potentiel du Maroc en Produits du Terroir et Stratégie Adoptée pour le dévelo...
 
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdfBibdoc 2024 - Ecologie du livre et creation de badge.pdf
Bibdoc 2024 - Ecologie du livre et creation de badge.pdf
 
PIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdfPIE-A2-P4-support stagiaires sept 22-validé.pdf
PIE-A2-P4-support stagiaires sept 22-validé.pdf
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
Bernard Réquichot.pptx Peintre français
Bernard Réquichot.pptx   Peintre françaisBernard Réquichot.pptx   Peintre français
Bernard Réquichot.pptx Peintre français
 
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdfVulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
Vulnérabilité numérique d’usage : un enjeu pour l’aide à la réussitepdf
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
Cours de Management des Systèmes d'information
Cours de Management des Systèmes d'informationCours de Management des Systèmes d'information
Cours de Management des Systèmes d'information
 
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptxPrésentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
Présentation - Initiatives - CECOSDA - OIF - Fact Checking.pptx
 
Apprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceursApprendre avec des top et nano influenceurs
Apprendre avec des top et nano influenceurs
 

Seance 4- Programmation en langage C

  • 1. Programmation en langage C Fahad R. Golra Faculté des Sciences et Technologies Université de Lorraine Séance 4 – Pointeurs et Chaînes de caractères
  • 2. 2 24/11/2017 Pointeurs Programmation en langage C, Université de Lorraine • On utilise des pointeurs dans : • La transmission des arguments par pointeurs (résultats de retour) • La manipulation des tableaux • Les chaînes de caractères • Les fichiers : FILE * aLire, * aCreer • Etc.
  • 3. 3 24/11/2017 Pointeurs Programmation en langage C, Université de Lorraine • Un pointeur est une variable dont la valeur est une adresse • Déclaration : type * identificateur ; • PointeurSurEntier est une variable qui peut contenir l’adresse mémoire d’une variable entière • La valeur d’un pointeur étant une adresse, l’opérateur * permet d’accéder à la valeur qui est à cette adresse int *pointeurSurEntier; int unEntier, *pointeurSurEntier = &unEntier; int unEntier=5, unAutre, *pointeur = &unEntier; unAutre = *pointeur /*unAutre prend la valeur 5*/
  • 4. 4 24/11/2017 Operateurs & et * Programmation en langage C, Université de Lorraine • Adresse de : & • Syntaxe : &variable , donne l'adresse mémoire de la variable • Dont l'adresse est : * • Syntaxe *expression : donne le mot mémoire dont l'adresse est donnée par l'expression int i, adr; adr = &i; int i, *adr; i=1; adr=&i; printf("%d", *adr); Affiche "1"
  • 5. 5 24/11/2017 Exemple : Variable Programmation en langage C, Université de Lorraine • On définit ainsi une variable a associée à un emplacement mémoire • Pour instancier a, il suffit d’affecter une valeur à a int a; a= 5;
  • 6. 6 24/11/2017 Exemple : Pointeurs Programmation en langage C, Université de Lorraine • On définit une pointeur p qui va contenir une adresse : l’adresse de l’objet que va pointer la pointeur p, ici a. • On ne peut affecter à p qu’une adresse int a; int *p; p = &a; *p = 6; De cette manière p va pointer sur l’objet que désigne l’identificateur a. Ca va instancier l’objet que pointe p Quelle valeur est maintenant associée à a ? 6
  • 7. 7 24/11/2017 Rappelez-vous !!! Fonctions Programmation en langage C, Université de Lorraine # include <stdio.h> void permute(int*, int*); int main(void) { int x = 3, y = 4; permute (&x, &y); printf("x = %dn", x); printf("y = %dn", y); return 0; } void permute(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } # include <stdio.h> void permute(int, int); int main(void) { int x = 3, y = 4; permute (x, y); printf("x = %dn", x); printf("y = %dn", y); return 0; } void permute(int a, int b) { int temp; temp = a; a = b; b = temp; } Passage par référence Passage par valeur
  • 8. 8 24/11/2017 Chaîne de caractères Programmation en langage C, Université de Lorraine • On définit ainsi un pointeur "chaine" qui va pointer sur une zone mémoire de 8 octets consécutifs (nous supposons ici qu’un caractère ne nécessite qu’un octet pour son codage). char *chaine="bonjour"; *(chaine+1) caractère ‘o’ *(chaine+2) caractère ‘n’ *(chaine+3) caractère ‘j’ *(chaine+4) caractère ‘o’ *chaine caractère ‘b’ *(chaine+5) caractère ‘u’ *(chaine+6) caractère ‘r’ *(chaine+7) caractère ‘0’ le caractère nul ‘0’ termine toute chaîne de caractère. C’est la raison pour laquelle la chaîne de 7 caractères ˝bonjour˝ est représentée en mémoire par une zone consécutive de 8 octets.
  • 9. 9 24/11/2017 Chaîne de caractères Programmation en langage C, Université de Lorraine • On définit ainsi un pointeur "chaine" qui va pointer sur une zone mémoire de 8 octets consécutifs (nous supposons ici qu’un caractère ne nécessite qu’un octet pour son codage). char *chaine="bonjour"; | 'b' | 'o' | 'n' | 'j' | 'o' | 'u' | 'r' |'0'| |_____|_____|_____|_____|_____|_____|_____|____| Le ‘0’ marque la fin de la chaîne de caractères
  • 10. 10 24/11/2017 Exemple 1– Chaînes de caractères Programmation en langage C, Université de Lorraine • Un programme qui initialise une variable pointeur adr qui pointe sur la chaîne de caractères "bonjour" et qui affiche à l’écran chaque caractère de "bonjour". #include <stdio.h> int main(void) { char *adr = "bonjour"; while (*adr) { printf (" %cn", *adr); adr++; } return 0; }
  • 11. 11 24/11/2017 Chaîne de caractères (Explicit vs. Implicit) Programmation en langage C, Université de Lorraine • Lorsque l’on déclare une chaîne de n caractères à l’aide d’un pointeur explicite, le compilateur réserve un emplacement mémoire de n+1 octets exactement. • Il est possible de déclarer une chaîne de n caractères à l’aide d’un pointeur implicit : char *chaine="bonjour"; 8 octets char chaine[8]="bonjour";
  • 12. 12 24/11/2017 Sur-dimmensionner une chaîne de caractères Programmation en langage C, Université de Lorraine • Il est possible de sur-dimmensionner une variable chaîne de caractères ainsi : • ch est un pointeur implicite qui pointe sur une zone mémoire de 20 octets. • Les 8 premiers octets sont initialisés avec les caractères :{‘b’,’o’,’n’,’j’,’o’,’u’,’r’,’0’}. • Les 12 autres octets de ch sont arbitraires. • L’intérêt de sur-dimmensionner une chaîne de caractères sera vu lorsque l’on traitera des fonctions standards de le bibliothèque de chaîne de caractères <string.h>. char ch[20]="bonjour";
  • 13. 13 24/11/2017 Chaîne de caractères explicit Programmation en langage C, Université de Lorraine • À la différence d'un tableau, les chaînes de caractères respectent une convention : se terminer par le caractère nul, noté '0' (antislash-zero). • Ainsi, pour construire une chaîne de caractères « à la main », il ne faut pas oublier ce caractère final. #include <stdio.h> #include <string.h> int main(void) { char chiffres[11]; int i; for (i = 0 ; i < 10 ; i++) chiffres [i] = '0' +i; chiffres[10] = '0'; printf("chaine obtenue : %s", chiffres); return 0; }
  • 14. 14 24/11/2017 Chaîne de caractères explicit Programmation en langage C, Université de Lorraine • Il est possible de modifier une chaîne de caractères quelle que soit la manière dont on la déclare . • Dans cet exemple on a crée une chaîne formée des 10 caractères correspondant aux chiffres de 0 à 9 . #include <stdio.h> #include <string.h> int main(void) { char chiffres[11]; int i; for (i = 0 ; i < 10 ; i++) chiffres [i] = '0' +i; chiffres[10] = '0'; printf("chaine obtenue : %s", chiffres); return 0; }
  • 15. 15 24/11/2017 Fonctions principales Programmation en langage C, Université de Lorraine • Catégories importantes de fonctions pour les chaînes de caractères : • entrées-sorties standard de chaînes • tailles de chaînes • copie de chaînes • concaténation de chaînes • comparaison de chaînes • recherche de caractères ou de sous-chaines dans une chaîne • conversion de chaîne en nombre.
  • 16. 16 24/11/2017 Entrées-sorties standard de chaînes Programmation en langage C, Université de Lorraine • Lecture au clavier d’une chaîne de caractères • scanf • gets • Pour imprimer une chaîne de caractères à l’écran • printf • puts
  • 17. 17 24/11/2017 Entrées-sorties – scanf / printf Programmation en langage C, Université de Lorraine • scanf("%s", char *chaine) • Va saisir une chaîne jusqu’à un séparateur. • printf("%s", char *chaine) • Va afficher à l’écran la chaîne. #include <stdio.h> #include <stdlib.h> int main(void) { char *ch; printf("Entrez un phrase : "); scanf("%s",ch); printf("Le phrase est : %s", ch); return 0; }
  • 18. 18 24/11/2017 Entrées-sorties – gets/ puts Programmation en langage C, Université de Lorraine • gets(char *chaine) • Va saisir une chaîne jusqu’au retour de chariot (‘0’) • puts(char *chaine) • Va afficher à l’écran la chaîne. #include <stdio.h> #include <stdlib.h> int main(void) { char *ch; printf("Entrez un phrase : "); gets(ch); printf("Le phrase est : "); puts(ch); return 0; }
  • 19. 19 24/11/2017 La fonction strlen Programmation en langage C, Université de Lorraine • La fonction strlen calcule le nombre de caractères de la chaîne passée en paramètre (le caractère de fin de chaîne : ‘0’) n’est pas pris en compte. size_t strlen(const char *s); #include <stdio.h> #include <string.h> int main(void) { char *chaine1 = "bonjour"; char chaine2[10] = "salut"; int i = strlen(chaine1); int j = strlen(chaine2); printf("chaine1 : %sn", chaine1); printf("taille chaine1 : %dn", i); printf("chaine2 : %sn", chaine2); printf("taille chaine2 : %dn", j); return 0; }
  • 20. 20 24/11/2017 La fonction strcpy Programmation en langage C, Université de Lorraine • La fonction strcpy copie le contenu de la chaîne source dans la chaîne but. • Retourne l'adresse de but. char * strcpy (char *but, char *source) #include <stdio.h> #include <string.h> int main(void) { char ch1[20]; char ch2[10] = "bonjour"; char *ch3 = "salut"; strcpy(ch1, ch3); printf("ch1 : %sn", ch1); strcpy(ch1, ch2); printf("ch1 : %sn", ch1); strcpy(ch1, "hello"); printf("ch1 : %sn", ch1); return 0; }
  • 21. 21 24/11/2017 La fonction strcpy -- Attention !!! Programmation en langage C, Université de Lorraine • La fonction strcpy n’effectue aucun contrôle sur les longueurs des chaînes source et but. C’est le rôle du programmeur de faire attention à ce qu’il fait . • ch contient 6 octets et la chaîne "bonjour" nécessite 8 octets pour son stockage : donc le strcpy va écraser 2 octets en fin de tableau ou lancer une erreur. #include <stdio.h> #include <string.h> int main(void) { char ch[6] = "hello"; strcpy(ch, "bonjour"); printf("ch : %sn", ch); return 0; }
  • 22. 22 24/11/2017 La fonction strcat Programmation en langage C, Université de Lorraine • La fonction strcat permet de concaténer deux chaînes de caractères, i.e., de les mettre bout à bout. char *strcat ( char *but, char *source) #include <stdio.h> #include <string.h> int main(void) { char ch[50] = "bonjour"; char *per = "monsieur"; printf("avant : %sn", ch); strcat(ch, per); printf("apres : %sn", ch); return 0; }
  • 23. 23 24/11/2017 La fonction strcat – Attention!!! Programmation en langage C, Université de Lorraine • Aucun contrôle de longueur n’est réalisé par la fonction strcat : • il faut que l’emplacement réservé pour la première chaîne soit suffisant pour y recevoir la partie à lui concaténer. #include <stdio.h> #include <string.h> int main(void) { char ch[10]="bonjour"; char *per= "monsieur"; strcat(ch,per) ; printf ("ch : %sn", ch); return 0; }
  • 24. 24 24/11/2017 La fonction strcmp Programmation en langage C, Université de Lorraine • La fonction strcmp permet de comparer deux chaînes de caractères dans l’ordre lexicographique. • Retourne : • négative si chaine1 arrive avant chaine2 • positive si chaine1 arrive après chaine2 • nulle si les deux chaînes sont identiques. int strcmp (char *chaine1, *chaine2) #include <stdio.h> #include <string.h> int main(void) { int res; res = strcmp("bonjour", "monsieur"); printf ("Comparaison : %dn", res); res = strcmp("bonjour", "bonjour"); printf ("Comparaison : %dn", res); res = strcmp("monsieur", "bonjour"); printf ("Comparaison : %dn", res); return 0; }
  • 25. 25 24/11/2017 La fonction strchr Programmation en langage C, Université de Lorraine • La fonction strchr retourne l’adresse de la première occurrence du caractère dans la chaîne, NULL si le caractère n’y est pas. char * strchr (char *chaine, char c) #include <stdio.h> #include <string.h> int main(void) { char *ch ="bonjour"; ch=strchr (ch, 'o'); printf("Ch : %s", ch); return 0; }
  • 26. 26 24/11/2017 La fonction strchr - Exemple Programmation en langage C, Université de Lorraine • ad contient l’adresse du premier ‘e’ dans ch • si ch contient le caractère 'e' bloc1sera exécuté et sinon c’est bloc2 qui est exécuté. char * strchr (char *chaine, char c) #include <stdio.h> #include <string.h> int main(void) { char *ch="bonjour monsieur"; char *ad = strchr(ch, 'e'); if(ad) printf("ch contient en"); else printf("ch ne contient pas en"); return 0; }
  • 27. 27 24/11/2017 La fonction strstr Programmation en langage C, Université de Lorraine • La fonction strstr permet de rechercher la première occurrence d’une chaîne donnée (sous-chaîne) dans une autre. • Retourne l'adresse de la première occurrence complète de la sous-chaîne cherchée, sinon NULL. char *strstr (char *ch1, char *ch2) #include <stdio.h> #include <string.h> int main(void) { char *ch ="bonjour monsieur"; char *per="monsieur"; ch=strstr(ch, per); printf("Ch : %s", ch); return 0; }
  • 28. 28 24/11/2017 La fonction strpbrk Programmation en langage C, Université de Lorraine • La fonction strpbrk permet de rechercher dans une chaîne la première occurrence d’un des caractères appartenant à un ensemble. • Retourne l'adresse de la première occurrence dans chaine1 de l’un des caractères de chaine2, NULL si inexistence. char *strpbrk (char *ch1, char *ch2) #include <stdio.h> #include <string.h> int main(void) { char *ch ="bonjour monsieur"; char *per="nancy"; ch=strpbrk(ch, per) ; printf("Ch : %s", ch); return 0; }
  • 29. 29 24/11/2017 Conversion de chaînes en nombres Programmation en langage C, Université de Lorraine • Les trois fonctions les plus utilisées sont : 1. atof - une chaîne en double 2. atoi - une chaîne en int 3. atol - une chaîne en long int • La librairie à inclure est stdlib.h #include <stdio.h> #include <stdlib.h> int main(void) { double d; int i; long l; char *chd = "-3.141592"; char *chi = "-122"; char *chl = "234567890"; d = atof(chd); i = atoi(chi); l = atol(chl); printf("chd : %lfn", d); printf("chi : %dn", i); printf("chl : %ldn", l); return 0; }