Vous êtes sur la page 1sur 74

Universit Hassan 1er

cole Nationale des Sciences Appliques Khouribga

Langage de programmation C

Prpar par : M. MOUFID


Langage C 1

INTRODUCTION
Le compilateur du langage C ne comporte aucun systme de scurit (linitialisation des variables avant leur utilisation, la division par zro, le dpassement de 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 C

INTRODUCTION
Le premier chapitre donne une prsentation gnrale de la notion de programmation en C. Le deuxime chapitre dcrit 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. Le septime chapitre prsente la notion de type en gnral et les deux types ENUM et UNION en particulier. Le huitime chapitre prsent le type chane de caractres. Le 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 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 Bell Telephon. C est faiblement typs, ils ne manipulent que les types proches de l'architecture des machines avec peu de contrle de type. Il n'y a pas d'instructions d'entre-sortie. Mais il possde une bibliothque standard trs riche.
Langage C 5

Historique
Il existe plusieurs versions :
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 : SIGNED , CONST et VOLATILE ; Visual C++ : de Microsoft ; etc.
Langage C 6

Historique
Le vocabulaire des langages C et C++ est compos en : Les symboles de base : Les lettres : a , ... , z , A , ... , Z 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,

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


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

Exemple
Calcul de la moyenne de trois notes d'un tudiant.
#include <stdio.h> void main() { int A , B , C ; int S ; float M ; scanf("%d %d %d" , &A , &B , &C) ; 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 , ;

Langage C

12

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

Exemples : - 24, 25, 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].

Syntaxe :
long int var_1 [, var_2, ] ; long var_1 [, var_2, ] ;

Langage C

14

Rel
Rel simple prcision
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, ; double var1, var2, ;

Langage C

16

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

Syntaxe :
long double 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 le ou logique; ! : pour le non logique; < > <= >= == != : Comparaison; = += -= *= : Affectation; ++ : Incrmentation; -- : Dcrmentation;
Langage C 19

Fonctions de la bibliothque
Les fonctions suivantes font partie de la bibliothque standard math.h. Pour pouvoir les utiliser, il faut ajouter la ligne suivante : #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), SINH(expr_arith), TANH(expr_arith), ACOSH(expr_arith), ASINH(expr_arith), ATANH(expr_arith), EXP(expr_arith), LOG10(expr_arith), LOG(expr_arith).

Langage C

20

Fonctions de la bibliothque
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.

Langage C

21

Fonctions de la bibliothque
Nombre alatoire : Les fonctions suivantes font
partie de la bibliothque standard stdlib.h. SRAND(expr_arith) : Rinitialise le gnrateur de nombre alatoire avec expr_arith, qui est un nombre entier simple non sign. Sans cette instruction, le gnrateur de nombre alatoire est rinitialis avec1. RAND() : Retourne un nombre entier simple non sign 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. SQRT(expr_arith) : Retourne la racine carre de l'argument expr_arith qui est positif ou nul. 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 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
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 de caractres entre guillemets compose par la liste des formes des variables lire. &var_1, &var_2 , ... est une liste des adresses des variables lire. % : indique l'endroit de lecture ; Exemple :
scanf("%3d %2d %f" , &A , &B, &C) ;
Langage C 26

Instructions de base
Ecriture : Syntaxe :
printf( const_chane [, expr_1 [ , expr_2 ; ... ] ] ) ; const_chane est une chane de caractres entre guillemets compose par la liste des formes des valeurs des expressions crire avec ventuellement des chanes de caractres afficher sans interprtation. Exemples :
printf("%5d" , A) ; 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 ] ;

Langage C

28

Instructions de base
Affectation :
Syntaxe :
var = expr ; var_1 = var_2 = ... = var_n = expr ; ++var ; pr-incrmentation 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 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 ligne. La recherche du fichier est effectue dans 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>

Smantique :
Insert le fichier de nom nom_f la position ou se trouve cette ligne. La recherche du fichier est effectue dans le chemin de nom_f puis dans le rpertoire dinclusion qui porte gnralement 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 de dfinir des constantes avec #define. Syntaxe :
const [type] identif_1 = val_1 [ , identif_2 = val_2 , ];

Exemple :
const int MAX = 10 ;

Remarque : Les constantes nommes ne sont pas ranges dans la mmoire car elles sont connues la compilation.
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 : // chane

Langage C

34

Exemple
Calcul de la moyenne de trois notes d'un tudiant. /* La moyenne de 3 notes */ #include <stdio.h> #define c1 2 #define c2 3 #define c3 2 Void main() { int A , B , C ; int S ; float M ; /* 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 : 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 secondes, en heures, minutes et secondes. Exercice 3 : crire un programme en C qui permet de raliser la permutation circulaire de trois 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 :
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
En C, il n'y a pas de type logique : Une expression numrique de valeur 1 ou non nulle reprsente vrai ; une expression numrique de valeur 0 reprsente faux. Les oprateurs relationnels : == < > <= >= != Les oprateurs logiques : ! || && Remarque : L'valuation d'une expression logique est arrte aussitt 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 C != 0 est quivalent C

Langage C

40

Instruction conditionnelle
Syntaxe : IF (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 = instr , suite_instr / instr ;

Langage C

41

Instruction conditionnelle
Remarque :
else se rapport toujours au if le plus rapproch, sauf en 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 ; ] case expr_const_2 : module_2 ; break ; ... [ default : module ; break ; ] }

Langage C

44

Traitement par cas


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

Exemple
switch (m) { 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 du second degr AX2+BX+C=0, coefficients rels. Exercice 3 : Ecrire un programme en C permettant la dtermination 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_instr = instr ; /liste_instr; Si expr_log n'existe pas elle est considre comme toujours 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") ; printf("Mathmatiques") ; }
Langage C 50

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

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

EXERCICES
Exercice 1 : 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 de N nombres. 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. Exercice 5 : crire un programme en C permettant la dtermination de tous les nombres parfait infrieurs un nombre donn.
Langage C 53

VI. Tableau

Langage C

54

Tableau
Syntaxe :
type identif [[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 de la liste de valeurs dinitialisation expr_1,. L'intervalle entier des indices est [ 0 , expr_const_ent - 1 ]. 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 dinitialisation est infrieur la taille du tableau, les valeurs dinitialisation sont affectes aux premiers lments du tableau et les autres lments sont initialiss par 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.

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. 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. Exercice 6 : crire un programme en C qui permet de trier les lments d'un vecteur par ordre 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 '.

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 :
char identif_1 [ = expr_1 ] [, identif_2 [ = expr_2 ] , ...] ;

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

Caractre
Fonctions de la bibliothque :
getchar() : retourne le caractre suivant de l'entre standard, tap partir du clavier. Elle retourne EOF 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 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. tolower(expr_car) : retourne le caractre de l'argument en minuscule. cout.put(expr_car) : affiche le caractre de expr_car. cin.get(var_car) : lit un caractre et le positionne dans var_car.
Langage C 63

Caractre
Remarque :
char c1 , c2 , c3 ; cin.get(c1) ; cin.get(c2) ; cin.get(c3) ; // c1 = getchar() ; // c2 = getchar() ; // c3 = getchar() ; Si lutilisateur entre : A retour chariot puis B retour chariot 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 caractre spcial nul '\0'.

Syntaxe :
char identif[ [const_ent] ] ; char *identif ;

identif est une variable de type chane de caractres de longueur maximum const_ent - 1, 255 par dfaut. 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 pas de la place pour '\0'. var_chane = expr_chane ; Si la longueur de la chane expr_chane et suprieure la longueur de la chane var_chane alors la partie 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) 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) 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) ATOL(expr_chane) ATOF(expr_chane) STRLWR(var_chane) STRUPR(var_chane) Langage C

70

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

strncpy(ch_1,10,3) strlen(ch_1)
delete(ch_1,1,9)

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


=====>

12

ch_1 devient "vie

Remarques :
gets(var_chane) ; et scanf("%s" , var_chane) ; ne sont pas quivalent car la premire lu 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.
Langage C 71

puts(expr_chane) ; <===> printf("%s\n" , expr_chane) ;

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

getch() : retourne un caractre lu directement partir 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 :
Calculer le nombre d'occurrences d'un caractre dans une chane de caractres.

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

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

VIII. Fonction

Langage C

74