Sie sind auf Seite 1von 74

Universit Hassan 1er

cole Nationale des Sciences A li S i Appliques Khouribga

Langage d L de programmation C p g

Prpar par : M. MOUFID


Langage C 1

INTRODUCTION
Le compilate r d langage C ne comporte a c n compilateur du aucun systme de scurit (linitialisation des variables avant leur utilisation la division par zro le dpassement de utilisation, zro, capacit dun tableau ou dune chane de caractres, ) pour pouvoir produire des programmes trs ) compacts et proches au langage machine. Cela ncessite au programmeur un niveau de rigueur trs important, une conception claire et complte et une matrise du langage langage.

Langage C

INTRODUCTION
Le premier chapitre donne une prsentation gnrale de la notion de programmation en C. Le deuxime chapitre dcrit ot o p og a at o e e deu e c ap t e dc t le type arithmtique. Le troisime chapitre dcrit le traitement squentiel. Le quatrime chapitre est consacr au traitement conditionnel. Le cinquime chapitre est rserv au traitement itratif. Le sixime chapitre prsente la notion de tableau. L septime chapitre prsente l notion d t t bl Le ti h it t la ti de type en gnral et les deux types ENUM et UNION en particulier. Le huitime chapitre prsent le type chane de caractres Le caractres. neuvime chapitre prsente la notion de fonction. Le dixime chapitre prsente la notion de sorte. Le onzime chapitre est rserv l'tude des fichiers. Le douzime chapitre prsente la notion de pointeur. Le treizime chapitre p p p p est rserv un certain nombre d'utilitaires. Langage C 3

I - Programmation en C

Langage C

Historique
C est un langage de programmation conu en 1972 par Dennis RITCHIE au sein des Laboratoires B ll T l h L b i Bell Telephon. C est faiblement typs, ils ne manipulent que les yp , p q types proches de l'architecture des machines avec peu de contrle de type Il n'y a pas d'instructions type. n y d instructions d'entre-sortie. Mais il possde une bibliothque standard t riche. t d d trs i h
Langage C 5

Historique
Il existe plusieurs versions : it l i i
C : produit de la socit Microsoft Corporation ; Turbo C : produit de la socit Borland International Inc ; Vax C / ULTRIX : produit de Digital Equipment Corporation ; C ++ : C avec une intgration des concepts de la programmation oriente objet ; Objective C : C avec une intgration des concepts de la programmation oriente objet ; C ANSI : C standardis en 1988. Elle introduit les notions suivantes s i antes : SIGNED , CONST et VOLATILE ; Visual C++ : de Microsoft ; etc.
Langage C 6

Historique q
Le vocabulaire des langages C et C++ est compos en : Les symboles de base : L lettres : a , ... , z , A , ... , Z Les l Les chiffres : 0 , ... , 9 Les symboles spciaux : + - ^ * / % " ' = > < . ; , ( ) []{}#$!&|~?: Les caractres de contrles : lespace, la tabulation, le retour chariot, le saut de ligne, le saut de page, chariot ligne page

Langage C

Historique
Les diffrents termes lexicaux de base de C sont : Les identificateurs ; Les constantes ; Les oprateurs ; Les sparateurs ; Les mots rservs, mots cls : AUTO BREAK CASE CHAR CONTINUE DEFAULT DO DOUBLE ELSE EXTERN FLOAT FOR GOTO
Langage C 8

Structure d un programme C d'un


Syntaxe : y La structure simplifie dun programme en C est la suivante : tl i t
[ liste_incl ] void main() { [ liste_dc_var ] liste_instr li i }
Langage C 9

Exemple
C l l de la moyenne de trois notes d'un tudiant. Calcul d l d t i t d' t di t
#include <stdio.h> void main() { int A , B , C ; int S ; float M ; scanf("%d %d %d" , &A , &B , &C) ; f("%d S=A+B+C; M=S/3; printf("La moyenne est : %6.2f\n" , M) ; }
Langage C 10

II. Type arithmtique

Langage C

11

Entier
Entier court :
Loccupation mmoire est : 2 octets. L'intervalle des entiers courts est : [- 32768, 32767]. [ , ]

Exemples : - 24, 25, Syntaxe :


short int var1 , var2 , ; short var1, var2 , ; h t 1 2

Langage C

12

Entier
E ti simple : Entier i l
L'intervalle des entiers simples correspond celui des entiers d l' hi i de l'architecture d l machine; de la hi Loccupation mmoire est : 2 ou 4 octets.

Exemples : - 24, 25, y Syntaxe :


int var1, var2, ;

Langage C

13

Entier
Entier long :
Loccupation mmoire est : 4 octets. L'intervalle des entiers longs est : [- 2 147 483 648, 2 147 483 647]. L intervalle 648 647]

Syntaxe :
l long int var_1 [, var_2, ] ; i t 1[ 2 ] long var_1 [, var_2, ] ;

Langage C

14

Rel
R l simple prcision Rel i l ii
Loccupation mmoire est : 4 octets. L'intervalle des rels en simple prcision est : [ - 3.4 10+38 , 3.4 10-38 ] U { 0 } U [3.4 10-38 , 3.4 10+38 ].

Syntaxe :
float var1 ,var2, ;

Langage C

15

Rel
Rel double prcision
Loccupation mmoire est : 8 octets. L'intervalle des rels en double prcision est : [ - 1.7 10+308 , - 1.7 10-308 ] U { 0 } U [1.7 10-308 , 1.7 10+308 ].

Syntaxe :
long float var1 , var2, ; g , double var1, var2, ;

Langage C

16

Rel
Rel long double
Loccupation mmoire est : 10 octets. L occupation octets L'intervalle des rels en double prcision est : [- 1.2 10+4932, 1.2 10-4932] U { } U [1.2 10-4932, 1.2 10+4932]. ] {0} [ , ]

Syntaxe :
long double var 1 [ var 2 ] ; var_1 [, var_2, ]

Langage C

17

Expression arithmtique
Oprateurs :
Oprateurs arithmtiques : Les oprateurs arithmtiques suivant leur ordre de prcdence dcroissant : +, -, *, /, %, expr_ent_1 % expr_ent_2 : Est le reste de la division euclidienne de expr_ent_1 par expr_ent_2. Les oprandes et le rsultat de % sont des entiers. Exemples : 7%3 ===> 1 5/9 ===> 0 5.0 / 9.0 ===> 0.5555555556 5 / 9.0 ===> 0.5555555556 Langage C 18 5.0 / 9 ===> 0.5555555556

Expression arithmtique
Oprateurs :
Oprateurs binaires :

&& : pour le et logique; || : pour l ou logique; le l i ! : pour le non logique; < > <= >= == != : Comparaison; + = += -= *= : Affectation; ++ : Incrmentation; -- : D Dcrmentation; t ti
Langage C 19

Fonctions de la bibliothque q
Les fonctions suivantes font partie de la bibliothque standard math.h. math h Pour pouvoir les utiliser il faut ajouter la ligne suivante utiliser, : #include <math.h>; Les oprandes et les rsultats de ces fonctions sont de type double;

Trigonomtrie :
COS(expr_arith), SIN(expr_arith), TAN(expr_arith), ACOS(expr_arith), ATAN(expr_arith), COSH(expr_arith), ACOS(expr arith) ATAN(expr arith) COSH(expr arith) SINH(expr_arith), TANH(expr_arith), ACOSH(expr_arith), ASINH(expr_a it ), ATANH(expr_a it ), EXP(expr_a it ), S N (exp arith), N (exp arith), (exp arith), LOG10(expr_arith), LOG(expr_arith).

Langage C

20

Fonctions de la bibliothque F ti d l bibli th


Conversion:
FLOOR(expr_arith) : Retourne le plus grand entier infrieur ou gal l'argument expr_arith; RINT(expr_arith) : Retourne la partie entire arrondi de l'argument expr_arith. CIEL(expr_arith) : Retourne le plus petit nombre suprieur ou gal l'argument expr_arith. p g g p

Langage C

21

Fonctions de la bibliothque
Nombre alatoire : Les fonctions suivantes font
p partie de la bibliothque standard stdlib.h. q SRAND(expr_arith) : Rinitialise le gnrateur de nombre alatoire avec expr arith qui est un nombre expr_arith, entier simple non sign. Sans cette instruction, le gnrateur de nombre alatoire est rinitialis avec1 avec1. RAND() : Retourne un nombre entier simple non sign alatoire. alatoire RANDOM() : Retourne un nombre entier long alatoire.
Langage C 22

Fonctions de la bibliothque
Divers :
FABS(expr_arith) : Retourne la valeur absolue de l'argument expr_arith. expr arith SQRT(expr_arith) : Retourne la racine carre de l'argument expr_arith qui est positif ou nul. p_ q p POW(expr_arith_1 , expr_arith_2) : Retourne le rsultat de l'argument expr_arith_1 la puissance l'argument expr_arith_2. POW10(expr_arith) : Retourne le rsultat de 10 la puissance l'argument expr_arith de type entier. FMOD(expr arith 1 , expr arith 2) : Retourne le reste de la FMOD(expr_arith_1 expr_arith_2) division entire de expr_arith_1 par expr_arith_2 de type entier.
Langage C 23

III. Traitement squentiel

Langage C

24

Instructions de base st uct o s


Lecture :
En C, les fonctions d'entre-sortie n'appartiennent pas au langage, mais elles se trouvent dans la bibliothque standard d'entre-sortie de C respectivement. Pour tout programme utilisant des instructions de lecture ou d'criture, il faut ajouter la ligne suivante avant MAIN() : #include <stdio.h> stdio.h est le fichier de la bibliothque standard d'entresortie.
Langage C 25

Instructions de base
Lecture :
Syntaxe : scanf(const_chane , &var_1 [ , &var_2 , ... ] ) ; const_chane est une chane d caractres entre t h t h de t t guillemets compose par la liste des formes des variables lire lire. &var_1, &var_2 , ... est une liste des adresses des variables lire lire. % : indique l'endroit de lecture ; E Exemple : l
scanf("%3d %2d %f" , &A , &B, &C) ;
Langage C 26

Instructions de base
Ecriture : Syntaxe :
printf( const_chane [ expr_1 [ , expr_2 ; ... ] ] ) ; i f( h [, 1 2 const_chane est une chane de caractres entre guillemets compose par l li t d f la liste des formes d valeurs d expressions des l des i crire avec ventuellement des chanes de caractres afficher sans interprtation. Exemples :
printf("%5d" , A) ; p ( ) printf("%5f" , F * 3) ; printf("A") ;
Langage C 27

Instructions de base
En C++ :
Lecture : Syntaxe : cin >> var1>>var2 ; Ecriture :

Syntaxe :
cout << [ chane ] << expr 1 [ << expr 2 ] ; expr_1 expr_2

Langage C

28

Instructions de base
Affectation :
Syntaxe :
var = expr ; var_1 = var_2 = ... = var_n = expr ; ++var ; pr-incrmentation ++ i t ti var++ ; poste-incrmentation --var ; var-- ; var op= expr ; op = + - * / % << >> & ^ |
Langage C 29

Notions de base
Initialisation :
Les variables ne sont pas automatiquement initialises. Elles peuvent tre initialises lors de ses dclarations. Le p contenu dune variable non initialise est imprvisible. Exemples :
int A = B = C = 0 ; int A , B = 10 ; int C = 20 , D = 30 , F = 20 * D ; long E = 500 * 100 ;

Le contenu d'une variable non initialise est indtermin sauf pourLangage variables globales. 30 les C

Notions de base
Inclusion de fichier Syntaxe :
#include "nom_f"

Smantique :
Insert le fichier de nom nom_f la position o se trouve cette li ligne. L recherche d fi hi est effectue d La h h du fichier ff dans l le chemin de nom_f puis dans le rpertoire du fichier source.

Langage C

31

Notions de base
Inclusion de fichier Syntaxe :
#include <nom_f f>

Smantique :
I Insert l fi hi d nom nom_f l position ou se t t le fichier de f la iti trouve cette tt ligne. La recherche du fichier est effectue dans le chemin de nom_f nom f puis dans le rpertoire dinclusion qui porte gnralement d inclusion le nom include.

Exemples :
#include "stdio.h" #include "global.c" Langage C
32

Notions de base
Constante
En C, il y a la notion de constante nomme en plus de la possibilit d d fi i d constantes avec #define. ibili de dfinir des Syntaxe :
const [type] identif_1 = val_1 [ , identif_2 = val_2 , ];

Exemple : p
const int MAX = 10 ;

Remarque : Les constantes nommes ne sont pas ranges dans la mmoire car elles sont connues l compilation. i ll t la il ti
Langage C 33

Notions de base
Commentaire :
Syntaxe : /* chane */
Un commentaire n'importe quelle position de la ligne et mme l'intrieur d'une instruction. La chane de caractres peut occuper plusieurs lignes.

Syntaxe : y // chane

Langage C

34

Exemple
Calcul de la moyenne de trois notes d'un tudiant. /* La moyenne de 3 notes */ #include <stdio h> <stdio.h> #define c1 2 #define c2 3 #define c3 2 Void main() { int A , B , C ; int S ; float M ; fl /* Corps du programme */ printf("Donner les 3 notes : ") ; /* Lecture des donnes */ scanf("%d %d %d" , &A , &B , &C) ; S = A * c1 + B * c2 + C * c3 ; M = S / (c1 + c2 + c3) ; printf("La moyenne est : %6.2f\n" , M) ; Langage C }

35

EXERCICES
Exercice 1 : E i Ecrire un programme en C qui permet de calculer la surface d'un rectangle. Exercice 2 : crire un programme en C permettant la dcomposition d'un intervalle de temps, donn en p p, secondes, en heures, minutes et secondes. Exercice 3 : crire un programme en C qui permet de raliser la permutation circulaire de trois nombres nombres.
Langage C 36

IV. Traitement conditionnel

Langage C

37

Branchement inconditionnel
Syntaxe : goto identif ; Syntaxe : identif: instr ; Remarque : Il n'y a pas de dclaration d'tiquette. Exemple : E l
scanf("%d" , &A) ; REP : B = A * 2 ; printf("%5d" , B) ; goto REP ;

Remarques :
L'instruction GOTO peut tre utilise dans une structure de IF, CASE, FOR, WHILE ou REPEAT. Le domaine de validit de l'tiquette est uniquement le bloc o elle Langage C 38 est dfinie.

Expression logique p gq
En C, il n'y a pas de type logique : Une expression numrique de valeur 1 ou non nulle reprsente vrai ; p une expression numrique de valeur 0 reprsente faux. Les oprateurs relationnels : == < > <= >= != Les oprateurs logiques : ! || && Remarque : L'valuation d'une expression logique est arrte aussitt p gq que sa valeur est dtermine.
Langage C 39

Expression logique
Exemples :
(5>3) || (A>3) est vrai (5<3) && (A>3) est faux

Remarques :
B == 0 est quivalent !B qu va e t ! C != 0 est quivalent C

Langage C

40

Instruction conditionnelle
Syntaxe : IF (expr log) module 1 (expr_log) module_1 [ ELSE module_2 ] module = ; / instr ; / bloc / suite_instr bloc = { liste_dc_var liste_instr } liste_instr = instr ; liste_instr / instr ; suite_instr suite instr = instr , suite_instr / instr ; suite instr

Langage C

41

Instruction conditionnelle
Remarque :
else se rapport toujours au if le plus rapproch, sauf en pp j f p pp , prsence d'accolades.

Exemple :
if (D >= 0) printf("Il y a des solutions relles") ; else printf("Il n\'y a pas de solutions relles") ;

Langage C

42

Instruction conditionnelle
Remarque : if (A>B) if (B>C) M = A ; else M = B ; n'est pas quivalent if (A>B) { if (B>C) M = A ; } else M = B ; Exemple : A=5 if (A>B) ... est quivalent Langage C if ((A=5)>B) ...

43

Traitement par cas


Syntaxe : switch (expr_ent) { case expr_const_1 : [ module_1 ; break ; ] t 1 d l 1 case expr_const_2 : module_2 ; break ; ... [ d f lt : module ; b k ; ] default d l break }

Langage C

44

Traitement pa cas a te e t par


Remarques : Les expressions doivent tre des entiers ou des caractres de mme type. yp BREAK de DEFAULT nest pas obligatoire si DEFAULT est la fin fin. Smantique : Si un cas correspond l valeur d l' d la l de l'expression teste, i alors toutes les instructions du module correspondant sont excutes puis il passe au cas suivant sans f i d teste. i i faire de Pour forcer la terminaison de l'instruction SWITCH il faut ili l'instruction BREAK f utiliser l'i i BREAK.
Langage C 45

Exemple
switch (m) { i h( ) case 20 : case 19 : case 18 : printf("tres bien") ; break ; case 17 : case 16 : printf("bien") ; break ; case 15 : case 14 : printf("assez bien") ; break ; case 13 : case 12 : case 11 : case 10 : printf("passable") ; break ; default : printf("ajourne") ; Langage C }

46

EXERCICES
Exercice 1 : crire un programme en C qui permet de dterminer du plus grand nombre de trois nombres donns. Exercice 2 : crire un programme en C qui permet de rsoudre l'quation d second d AX2+BX+C=0, coefficients l' i du d degr BX C 0 ffi i rels. Exercice 3 : Ecrire un programme en C permettant la dtermination p g p de la date du lendemain partir d'une date donne.
Langage C 47

V. Traitement itratif

Langage C

48

Itration simple
Syntaxe :
for ( [instr_1_1[[,instr_1_2]...]] ; [expr_log] ; [ [instr_2_1[[,instr_2_2]...]] ) [[, ] ]] module module = instr ; / bloc bloc = { liste_dc_var liste_instr } liste_dc_var dc_var liste_dc_var dc_var liste dc var = dc var liste dc var / dc var liste_instr = instr ; /liste_instr; Si expr log n'existe pas elle est considre comme toujours vrai. expr_log n existe vrai

Langage C

49

Itration simple
Exemples :
for (I = 1 ; I<=1000 ; ++I) ; for ( ; ; ) PRINTF("Informatique") ; for (I = 1 ; I<=10 ; ++I) ( ) PRINTF("Informatique") ; for (I = 10 ; I>=1 ; --I) { ( ) printf("Informatique") ; p printf("Mathmatiques") ; ( q ) }
Langage C 50

Itration conditionnelle
Syntaxe : while (expr_log) (expr log) module module = ; / instr ; / bloc Exemple : scanf("%d" , &A) ; while (A != 0) scanf( %d scanf("%d" , &A) ;
Langage C 51

Itration conditionnelle
Syntaxe : do module while (expr_log) ; (expr log) Exemple : do scanf("%d" , &A) ; f("%d" ( ) while (A = 0) ;
Langage C 52

EXERCICES
Exercice 1 : E i crire un programme en C qui permet de calculer la moyenne arithmtique d'une suite de N nombres. Exercice 2 : crire un programme en C qui permet de dterminer du plus grand nombre d'une suite d N nombres. d' it de b Exercice 3 : crire un programme en C permettant la dtermination de tous les diviseurs d'un nombre donn. Exercice 4 : crire un programme en C permettant la dtermination d'un nombre donn s'il est parfait ou non. Un nombre est parfait s'il est gal la somme de ses diviseurs autre que lui-mme. q Exercice 5 : crire un programme en C permettant la dtermination de tous les nombres parfait infrieurs un nombre donn. f it i f i b d
Langage C 53

VI. VI Tableau

Langage C

54

Tableau
Syntaxe :
type identif [[expr const ent]] [ = {expr 1, } ] ; [[expr_const_ent]] {expr_1, identif est un tableau de expr_const_ent valeurs de type type, de taille indfinie par dfaut ou dtermine par le nombre de valeurs p p de la liste de valeurs dinitialisation expr_1,. L'intervalle entier des indices est [ 0 , expr_const_ent - 1 ]. p_ _ La taille du tableau expr_const_ent doit tre une expression constante de type entier dont la valeur est calculable ds la compilation. La liste de valeurs dinitialisation expr_1,. Si le nombre de valeurs di i i li i est i f i l dinitialisation infrieur l taille d tableau, l valeurs la ill du bl les l dinitialisation sont affectes aux premiers lments du tableau et les autres lments sont initialiss par 0 0.
Langage C 55

Tableau
Syntaxe :
type identif [[expr_const_ent_1]][[expr_const_ent_2]] [ = { {expr_1_1, }, {expr_2_1, }, } ] ; identif est un tableau, de expr_const_ent_1 lignes expr_const_ent_2 colonnes dont les valeurs sont de type type.
L'intervalle entier des indices de lignes est : [ 0 , expr_const_ent_1 - 1 ]. L'intervalle entier des indices de colonnes est : [ 0 , expr_const_ent_2 - 1 ].

et

Le nombre de lignes expr_const_ent_1 et de colonnes expr_const_ent_2 du tableau doivent tre des expressions constantes de type entier dont leur valeurs sont calculable ds la compilation compilation.

Langage C

56

Tableau
Exemples :
#define MAX 10 int V1[5] ; float V2[] = { 5 , 2 , 9 , 2 , 9 } ; [] int V3[4] , V4[5] , T[MAX+1] ; float M1[4][2] = { { 1 , 5 } , { 2 } , { 3 , 6 } } ; [ ][ ] int M2[MAX][MAX] ; int M3[3][2] = { 1 , 6 , 4 , 5 , 6 , 6 } ; [ ][ ] int V[1000]={0} ;
Langage C 57

EXERCICES
Exercice 1 : crire un programme en C qui calcul le nombre d'lments nuls dans un vecteur d'ordre N. Exercice 2 : crire un programme en C qui permet de calculer la somme des lments dun tableau donne, en saisissant leurs lments. Exercice 3 : crire un programme en C qui permet de trouver le plus grand lment dun tableau d'ordre N N. Exercice 4 : crire un programme en C qui permet de trouver le plus petit lment dun tableau d'ordre N. Exercice 5 : crire un programme en C qui permet de calculer la somme de deux vecteurs donns. p g q p Exercice 6 : crire un programme en C qui permet de trier les lments d'un vecteur par ordre croissant. croissant
Langage C 58

VII. Chane de caractres

Langage C

59

Caractre
Constante :
Un caractre est un symbole, de l'ensemble fini et ordonn de tous les caractres entre '. caractres,

Exemples :
'A' , 'a' , '.' , ' '

'chane : A pour valeur la valeur du premier caractre de chane.

Langage C

60

Caractre
Variable:
Le type caractre est dsign par le mot rserv char.

Syntaxe : y
char identif_1 [ = expr_1 ] [, identif_2 [ = expr_2 ] , ...] ;

Exemple :
char C1 = 'B' , C2 ; Loccupation mmoire est : 1 octet. L ti i t t t Les oprateurs relationnels : ==, <, >, <=, >=, != La L comparaison d i des caractres se f i d' l' d fait d'aprs l'ordre lexicographique en suivant le systme de codage des caractres de la machine machine.
Langage C 61

Caractre
Fonctions de la bibliothque :
getchar() : retourne le caractre suivant de l'entre standard, tap partir d clavier. Elle retourne EOF d d i du l i ll la fin du fichier. putchar(expr_car) : Transfert le caractre de expr_car la sortie standard, sur l'cran. Si dans une expression arithmtique un oprande est de type caractre, il est transform par son code qui yp , p q est un entier.
Langage C 62

Caractre
Remarques :
var_car = getchar() ; <===> scanf("%c" , var_car) ; putchar(expr_car) ; <===> printf("%c" , expr_car) ; Dans la bibliothque "ctype.h", il y a les fonctions suivantes : isdigit(expr_car) : retourne 1 si le caractre de l'argument est un chiffre. isupper(expr_car) : retourne 1 si le caractre de l'argument est en majuscule. j l tolower(expr_car) : retourne le caractre de l'argument en minuscule. min sc le cout.put(expr_car) : affiche le caractre de expr_car. cin.get(var_car) : lit un caractre et le positionne dans var_car. i t( ) t t l iti d
Langage C 63

Caractre
Remarque :
char c1 , c2 , c3 ; cin.get(c1) ; cin.get(c2) ; cin.get(c3) ; // c1 = getchar() ; // c2 = getchar() ; g () // c3 = getchar() ; Si lutilisateur entre : A retour chariot puis B retour chariot p puis C retour chariot alors C1 contiendra A, C2 contiendra '\n' et C3 contiendra B.
Langage C 64

Chane de caractres
Constante :
Une chane de caractre est une suite de caractres entre ".

Exemples :
"C'est bien " "a" , " " "\"" , "\'" ou "'"

Langage C

65

Chane de caractres
Remarques :
Il y a une diffrence entre le caractre 'a' et la chane de caractres "a". Les constantes de type chane de caractres sont stockes dans la mmoire centrale, ce qui nest pas le cas des constantes des autres types. "oui" == "oui" est faut car les deux chanes de caractres sont stockes dans deux adresses diffrentes et la comparaison se fait sur leur pointeurs.
Langage C 66

Chane de caractres
Variable :
Le type chane de caractres est considr comme un tableau de caractres qui se termine toujours par le q j p caractre spcial nul '\0'.

Syntaxe :
char identif[ [const_ent] ] ; char *id tif ; h *identif

identif est une variable de type chane de caractres de longueur maximum const_ent - 1 255 par df l i 1, dfaut. L Le respect de cette taille n'est pas obligatoire.
Langage C 67

Chane de caractres
Exemple :
char CHA[] = "bien" ; char CHB[] = { 'b' , 'i' , 'e' , 'n' , '\0' } ; char CHC[5] = "bien" ; char CH1[24] ; CH1 = "C\'esr la vie" ; CH1[5] = 't' ; printf("%s" , CH1) ; CH2 = { 'C' , '\'' , 'e' , 's' , 't' , ' ' , 'l' , 'a' , ' ' , 'v' , 'i' , 'e' , '\0' } ; scanf("%s" , CH3) ; cin >> CH3 ;
Langage C 68

Chane de caractres
Remarques :
char CHA[3] = "bien" ; Gnre une erreur car il ny a bien ny pas de la place pour '\0'. var_chane = expr_chane ; h h Si la longueur de la chane expr_chane et suprieure la longueur d l chane var_chane alors l partie l l de la h l la i supplmentaire est tronque. Les oprateurs = et == ne sont pas permis pour les chanes de caractres.
Langage C 69

Chane de caractres
Fonctions de la bibliothque :
Les fonctions suivantes sont de la bibliothque string.h. STRCAT(var_chane , expr_chane) STRCAT( h h ) STRNCAT(expr_chane_1 , expr_chane_2 , expr_ent) STRCPY(var_chane , expr_chane) STRNCPY(var_chane , expr_chane , expr_ent) STRLEN(expr_chane) DELETE(var_chane expr_arith_1 expr_arith_2) DELETE(var chane , expr arith 1 , expr arith 2) STRCMP(expr_chane_1 , expr_chane_2) STRNCMP(expr_chane_1 , expr_chane_2 , expr_ent) STRICMP(expr_chane_1 , expr_chane_2) STRNICMP(expr_chane_1 , expr_chane_2 , expr_ent) ATOI(expr_chane) ATOI(expr chane) ATOL(expr_chane) ATOF(expr_chane) STRLWR(var_chane) STRLWR( h ) STRUPR(var_chane) Langage C

70

Chane de caractres
Exemples :
ch 1 contient "C'est la vie" ch_1 ch_2 contient "mort" ch 1 < ch_2 ch_1 ch 2
strcat(ch_1,strcat(" et la ",ch_2)) ====> "C\'est la vie et la mort "

strncpy(ch 1 10 3) strncpy(ch_1,10,3) strlen(ch_1)


delete(ch_1,1,9) delete(ch 1 1 9)

=====> 'vie' vie =====>


=====> >

12

ch_1 ch 1 devient "vie vie

Remarques :
gets(var_chane) ; et scanf("%s" , var_chane) ; ne sont pas quivalent car la premire lu gets( h ) t h ) t i l t l i l la chane de caractres jusqu la fin de la ligne et la deuxime lu la chane de caractres jusquau premier espace ou sparateur comme virgule rencontr.

puts(expr_chane) ; <===> printf("%s\n" , expr_chane) ; t( h ) i tf("% \ " h )


Langage C 71

Chane de caractres
Les fonctions suivantes sont de la bibliothque conio.h :

getch() : retourne un caractre l di t t h() t t lu directement partir t ti du clavier cin.get(var_chane , expr_ent , [expr_car]) : lit une chane de caractres dans var_chane de taille maximale expr_ent et qui se termine par le caractre expr_car.

Langage C

72

EXERCICES
Exercice 1 : E i
Calculer le nombre d'occurrences d'un caractre dans une chane de caractres.

Exercice 2 :
Calculer le nombre de mots, dlimits par des espaces, espaces dans une chane de caractres caractres.

Exercice 3 :
Dterminer l'image miroir d'une chane de caractres.
Langage C 73

VIII. Fonction

Langage C

74

Das könnte Ihnen auch gefallen