Vous êtes sur la page 1sur 21

cole Nationale d'Ingnieurs de Carthage

A.U. 2015/2016

Cours programmation en langage C


Chapitre 1 : Gnralits (21 pages)
1re anne Ingnieur Informatique

Fondateurs du langage C: Brian W.kernighan et Denis M. Ritchie


La dfinition de la premire version du langage C en 1988, au sein de linstitut
national amricain de normalisation (ANSI: American National Standards Institute)

Exemple 1 :

printf(" premiere annee informatique ");

Appelle une fonction prdfinie (fournie avec le langage et quon na pas besoin dcrire)
nomme printf.
Cette fonction reoit un argument "premiere annee informatique"
Les guillemets servent dlimiter une chane de caractres (suite de caractres).
Chaque instruction en langage C se termine par un point virgule ; .
#include<stdio.h>: permet d'utiliser toute une famille de fonctions prcompiles (ex: printf )
void main(): c'est la fonction principale. elle doit tre prsente dans tout programme.

Exemple 2 :

\n : permet un retour la ligne

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 1

Exemple 3 :

Dans cet exemple, il y a une rservation dun espace mmoire pour la variable x, une
adresse mmoire quelconque (2 octets)
printf( "la valeur de x est %d", x) ;

Ici, printf reoit deux arguments : "la valeur de x est %d" et x.


Le % indique que le caractre suivant est, non plus du texte afficher tel quel, mais un
code de format .
%d est remplac par la valeur de x.
Il faut toujours veiller accorder le code de format au type de la valeur
correspondante (%d pour int; %f pour float etc).

Exemple 4 :

Type entier : int ; %d


Type rel : float ; %f
Exemple 5 :

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 2

%p permet dafficher une adresse mmoire


La variable nomme x est de type int (destine contenir des nombres entiers relatifs).
En C, il existe plusieurs types
En C, les dclarations des types de variables sont obligatoires et doivent tre
regroupes au dbut du programme (fonction main).

Exemple 6 :

int x: // rservation de lespace mmoire pour une variable x


// sans initialisation

Pour lire des informations: la fonction scanf


scanf ( %d , &x);

Cest un appel de la fonction prdfinie scanf dont le rle est de lire des informations au
clavier.
Comme printf, la fonction scanf possde en premier argument un format exprim sous
forme dune chaine de caractre: %d (int)
Largument prcise dans quelle variable on souhaite placer la valeur lue
&x: la fonction scanf range la valeur lue ladresse de la variable. (& est un oprateur
signifiant adresse de )

Exemple 7 :

int x ; // rservation de lespace mmoire pour une variable x de type entier, sans initialisation
Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 3

float y ; //rservation de lespace mmoire pour une variable y de type rel, sans initialisation

Exemple
Ecrire un programme qui lit 3 entiers au clavier, affiche leur somme et leur moyenne.

2me version: sans utiliser les variables som et moy

Structure dun programme (pgm) en C

main() : en-tte : Elle prcise que ce qui sera dcrit sa suite est le programme
principal (main)
Le pgm principal est dlimit par des accolades
Les instructions situes entre accolades forment un bloc .
La fonction main est constitue dun en tte et dun bloc.
Il ira de mme pour toute fonction C
Un bloc peut lui-mme contenir dautres blocs

Quelques rgles dcriture : Les identificateurs


Les identificateurs servent dsigner les diffrents objets manipuls par le programme
(variables, fonction, etc).
Ils sont forms dune suite de caractres choisis parmi les lettres ou les chiffres. Le
premier dentre eux tant ncessairement une lettre.
Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 4

Le caractre _ est considr comme une lettre. Il peut apparatre au dbut dun
identificateur (lg_ligne; _total; _89)
Les majuscules et les minuscules sont autorises mais ne sont pas quivalentes (ligne
Ligne).
Longueur des identificateurs: les 31 premiers caractres sont significatifs

Quelques rgles dcriture : Les mots cls


Certains mots-cls sont rservs par le langage un usage bien dfini et ne peuvent
pas tre utiliss comme identificateurs.
Auto, break, case, char, const, continue, default, do, double, else, enum, extern, float,
for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch,
typedef, union, unsigned, void, volatile, while
Quelques rgles dcriture : Les sparateurs
int x,y; et non intx, y
int n,compte,total,p; ou bien plus lisiblement int n, compte, total, p;
Quelques rgles dcriture : le format libre
Le langage C autorise une mise en page parfaitement libre
une mme ligne peut comporter plusieurs instructions: int x; float y;
Quelques rgles dcriture : les commentaires
Le langage C autorise la prsence de commentaires dans les programmes
Il sagit de textes explicatifs destins aux lecteurs du programme et qui nont aucune
incidence sur sa compilation.
Ils sont placs entre /* et */ ou bien //
Ils peuvent apparatre tout endroit du programme
Les directives destination du prprocesseur

#define NB 5 est une directive qui sera prise en compte avant la traduction

(compilation du programme).
Les directives (#include<stdio.h> #include<conio.h> #define NB 5) doivent tre
crites raison dune par ligne et elles doivent obligatoirement commencer en dbut
de ligne.
Ces directives demandent dintroduire (avant compilation) des instructions situes
dans le fichier stdio.h, conio.h et de remplacer le symbole NB par 5

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 5

Lors de lappel dune fonction prdfinie, il est ncessaire dincorporer un tel fichier,
nomm fichier en-tte , qui contient des dclarations appropries concernant les
fonctions printf et scanf.
Ces dclarations permettront au compilateur deffectuer des contrles sur le nombre et
le type des arguments mentionns lors de lappel de la fonction
Un mme fichier en-tte contient des dclarations relatives plusieurs fonctions
En gnral, il est indispensable dincorporer stdio.h
#define NB 5 demande de remplacer systmatiquement, dans toute la suite du
programme, le symbole NB par 5.
#define sert dfinir la valeur dun symbole

Cration dun programme (pgm) en langage C


Suit les tapes suivantes :

dition du programme
Compilation
dition de liens

Cration dun programme en langage C : dition du programme

Ou saisie consiste crer partir dun clavier du texte dun programme (pgm)=>
programme source
Ce texte sera conserv dans un fichier=> fichier source
Chaque systme possde ses propres conventions de dnomination des fichiers
Un fichier: nom+extension

Cration dun programme en langage C : La compilation

Elle consiste traduire le pgm source (ou le contenu du fichier source) en langage
machine en faisant appel un programme nomm compilateur
Lopration de compilation se fait en deux tapes:
o Traitement par le prprocesseur: qui excute les directives qui le concerne
(commenant par #include, #define)
o La compilation: traduction en langage machine du texte en langage C fourni
par le prprocesseur
Le rsultat de la compilation porte le nom de module objet

Cration dun programme en langage C : dition de lien

Le module objet cr par le compilateur nest pas directement excutable


Il lui manque les diffrents modules objet correspondant aux fonctions prdfinies
utilises par le pgm (printf, scanf, etc).
Cest le rle de lditeur de lien daller rechercher dans la bibliothque standard les
modules objets ncessaires
Le rsultat de ldition de liens est un programme excutable, cd un ensemble
autonome dinstructions en langage machine

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 6

Si ce programme excutable est rang dans un fichier, il pourra ultrieurement tre


excut sans quil soit ncessaire de faire appel un quelconque composant de
lenvironnement de pgmt en C

Le prprocesseur
Cest un pgm qui est excut automatiquement avant la compilation et qui transforme
un fichier source partir dun certain nombre de directives
Les directives sont crites sur des lignes distinctes du reste du programme, elles sont
introduites par #: #include, #define
Les diverses possibilits offertes par le prprocesseur:
o Incorporation de fichiers source (#include)
o Dfinition de symboles et de macros (#define)
o Compilation conditionnelle
La notion de type

La mmoire centrale est un ensemble de positions binaires nommes bits.


Les bits sont regroups en octets (8 bits), et chaque octet est repr par ce quon
nomme son adresse
Lordinateur reprsente et traite les informations exprimes (codes) sous forme
binaire.
Une squence binaire peut reprsenter un nombre entier, nombre rel, caractre,
instruction, etc)
Il nest pas possible dattribuer une signification une information binaire tant que
lon ne connat pas la manire dont elle a t code.
la notion de type permet de rgler ce problme

Types de base
Les types de base du langage C se rpartissent en trois grandes catgories:
Nombres entiers (int, short , long)
Nombres flottants (float, double, long double)
Caractres (char)
Catgorie des entiers :

char : caractre : Une variable du type char peut contenir une valeur entre -128 et 127 et
elle peut subir les mmes oprations que les variables du type short, int ou long.
int : entier standard : Sur chaque machine, le type int est le type de base pour les calculs
avec les entiers. Le codage des variables du type int est donc dpendant de la machine.
Sur les IBM-PC sous MS-DOS, une variable du type int est code dans deux octets.
short : entier court : Le type short est en gnral cod dans 2 octets. Comme une variable
int occupe aussi 2 octets sur notre systme, le type short devient seulement ncessaire, si
on veut utiliser le mme programme sur d'autres machines, sur lesquelles le type standard
des entiers n'est pas forcment 2 octets.

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 7

dfinition

description

domaine min

domaine max

nombre d'octets

char

caractre

-128

127

short

entier court

-32768

32767

int

entier standard

-32768

32767

long

entier long

-2147483648

2147483647

Chacun de ces trois types peut tre qualifi de unsigned (non sign) (pas de bit rserv au
signe, des nombres positifs seulement)
dfinition

description

domaine min domaine max nombre d'octets

unsigned char

caractre

255

unsigned short

entier court

65535

65535

4294967295

unsigned int entier standard


unsigned long

entier long

Catgorie des flottants

Les types flottants permettent de reprsenter, de manire approche, une partie des
nombres rels.
Notation: M.BE Avec M: mantisse ; E: exposant; B:base
Exemple: 1.5 1022
0.472 10-8
1.5 et 0.472: mantisses ; 22 et -8: exposants
Un nombre rel sera reprsent en flottant.
Le C prvoit trois types de flottants: float, double et long double
Les constantes flottantes peuvent scrire indiffremment suivant lune des deux
notations:
o Dcimale
o Exponentielle
La notation dcimale doit comporter obligatoirement un point (~ virgule). La partie
entire ou dcimale peut tre omise 12.43 -0.38 -.38 4.
.27
La notation exponentielle utilise la lettre e (ou E) pour introduire un exposant entier
(puissance de 10), avec ou sans signe
4.25E4 4.25e+4 42.5E3 54.27E-32
542.7E-33 5427e-34
dfinition

prcision mantisse domaine min domaine max nombre d'octets

float

simple

3.4 * 10-38

3.4 * 1038

double

double

15

1.7 * 10-308

1.7 * 10308

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 8

long double

suppl.

19

3.4 * 10-4932 1.1 * 104932

10

Catgorie des caractres

Un caractre est cod sur un octet en mmoire


il existe des caractres non imprimables: caractres de changement de ligne (\n),
tabulation (\t), etc
Constantes de type caractre (imprimable): A + 9
Certains caractres non imprimables utilisent le caractre \ (antislash, backslash)
\a: bip; \b:retour arrire; \f: saut de page; \n: saut d ligne; \r: retour chariot; \t:
tabulation horizontale; \v: tabulation verticale, etc;
\a

sonnerie

\\

trait oblique

\b
\t
\n
\r
\0

curseur arrire
tabulation
nouvelle ligne
retour au dbut de ligne
NUL

\?
\'
\"
\f
\v

point d'interrogation
apostrophe
guillemets
saut de page (imprimante)
tabulateur vertical

Il est possible dutiliser directement le code du caractre en lexprimant la suite du


caractre antislash:
o Soit sous forme octale
o Soit sous forme hexadcimale prcde de x
o A \x41 \101

Initialisation et constantes
#define: permet de donner une valeur un symbole. Dans ce cas, le prprocesseur
effectue le remplacement correspondant avant la compilation

Il est possible dinitialiser une variable lors de sa dclaration: int i=7;


Cette valeur initiale volue lors de lexcution du programme (pgm)
Il est possible de dclarer que la valeur dune variable ne doit pas changer lors de
lexcution du pgm
const int n=20;
Les ventuelles instructions modifiant la valeur de n seront rejetes par le compilateur

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 9

Les oprateurs arithmtiques en C

C dispose doprateurs classiques binaires (portant sur deux oprandes ): +, -, *, /, et des


oprateurs unaires (portant sur une oprande) : - (oppos), + (identit) (exemple : -a ; +a)
En C, ces oprateurs peuvent porter sur des oprandes de type diffrent, en appliquant le jeu de
conversion implicite (exemple : pour additionner un entier et un rel, lentier est converti en rel,
le rsultat est un rel).
Il existe un oprateur de modulo not % qui ne peut porter que sur des entiers et qui fournit le
reste de la division de son premier oprande par son second
Le quotient de deux entiers fournit un entier (5/2) vaut 2 (5.0/2.0) vaut 2.5

Mme Wiem Yaiche Elleuch

addition

soustraction

multiplication

division (entire et rationnelle!)

modulo (reste d'une division entire)

chapitre 1 : Gnralits

Page 10

Les priorits relatives des oprateurs

Lorsque plusieurs oprateurs apparaissent dans une mme expression, il est ncessaire de
savoir dans quel ordre ils sont mis en jeu.
Oprateurs unaires + (identit) et (oppos) sont prioritaires, ensuite *, /, % et enfin
oprateurs binaires: + et
En cas de priorit identique, les calculs seffectuent de gauche droite
Les parenthses permettent de changer ces rgles de priorit.

Les conversions implicites pouvant intervenir dans un calcul dexpression

En C, ces oprateurs peuvent porter sur des oprandes de type diffrent


int n, p;
float x;
n*x+p;
Le compilateur convertit n en float; le rsultat final en float
int-> long -> float -> double -> long double
On peut convertir directement un int en double.
On ne peut pas convertir un double en float ou en int

Rgles de conversion automatique


Conversions automatiques lors d'une opration avec :

deux entiers: D'abord, les types char et short sont convertis en int. Ensuite, l'ordinateur choisit le
plus large des deux types dans l'chelle suivante:
int, unsigned int, long, unsigned long

un entier et un rationnel: Le type entier est converti dans le type du rationnel.


deux rationnels: L'ordinateur choisit le plus large des deux types selon l'chelle suivante: float,
double, long double
affectations et oprateurs d'affectation: Lors d'une affectation, le rsultat est toujours converti
dans le type de la destination. Si ce type est plus faible, il peut y avoir une perte de prcision.
Exemple 1 :
int x;
float a=12.48;
char b=4;
x=a/b;
B est converti en float (rgle 2). Le rsultat de la division est du type float (valeur 3.12) et sera
converti en int avant d'tre affect x (rgle 4), ce qui conduit au rsultat x=3.
Exemple 2 :
char A=3;
int B=4;
float C=4;
float D,E;
char F;
D = A/C;
E = A/B;
F = A/C;

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 11

Pour le calcul de D, A est converti en float (rgle 2) et divis par C. Le rsultat (0.75) est affect
D qui est aussi du type float. On obtient donc: D=0.75
Pour le calcul de E, A est converti en int (rgle 1) et divis par B. Le rsultat de la division (type
int, valeur 0) est converti en float (rgle 4). On obtient donc: E=0.000
Pour le calcul de F, A est converti en float (rgle 2) et divis par C. Le rsultat (0.75) est retraduit
en char (rgle 4). On obtient donc: F=0

Le cas du type char

Il existe une conversion systmatique de char en int


Une valeur de type caractre peut tre considre:
o Comme le caractre concern (a, z, \n)
o Comme le code de ce caractre: ex: 1000001 => 65 => caractre A (en ASCII)

/**********************************************/

Tout argument de type char ou short est converti en int. Le code %c sapplique aussi un int. Il
affichera le caractre ayant le code correspondant

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 12

0 => code ASCII 48


1 => code ASCII 49

9
A => code ASCII 65
B => code ASCII 66

a => code ASCII 97


b => code ASCII 98
etc

Les oprateurs relationnels

C permet de comparer des expressions laide doprateurs classiques de comparaisons ( 2*a >
b+5)
Le rsultat de la comparaison est:
o 0 si le rsultat de la comparaison est faux
o 1 si le rsultat de la comparaison est vrai
Les oprateurs relationnels: <, <=, >, >=, ==, !=
Les quatre premiers sont de mme de priorit (<, <=, >, >=). Les deux derniers (==, !=) sont de
mme priorit, mais infrieure celle des prcdents
==
!=
<, <=, >, >=

gal
diffrent de
plus petit que, ...

Oprateurs de comparaison

Une comparaison peut porter sur deux caractres


o c1==c2 est vrai si c1 et c2 contiennent le mme caractre
o c1==e est vrai si c1 contient le caractre e (code de c1 est gal au code de e)
o c1<c2 est vrai si le code de c1 a une valeur infrieure au code de c2 (le rsultat de cette
comparaison varie selon le codage employ)

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 13

Lordre alphabtique est respect pour les minuscules et majuscules a < b


Les chiffres sont classs par ordre naturel 2< 3

Les oprateurs logiques

Il existe trois oprateurs logiques: et (not &&), ou (not ||), non (not !). Ces oprateurs
produisent un rsultat numrique (int)
o (a<b) && (c<d): prend la valeur 1 si les deux expressions sont vraies. 0 sinon
o (a<b) || (c<d): prend la valeur 1 si lune des expressions est vraie. 0 sinon
o !(a<b): prend la valeur 1 si lexpression est fausse
On rencontre frquemment if (!n) if (n==0)
! est prioritaire: !a==b => (!a)==b et non !(a==b)
|| est moins prioritaire que &&. Tous deux sont de priorit infrieure aux oprateurs arithmtiques
et relationnels.
a<b && c<d (a<b) && (c<d)
On value a<b si le rsultat est faux, on arrte

Oprateurs logiques
&&
||
!

et logique (and)
ou logique (or)
ngation logique (not)

Loprateur daffectation ordinaire

i=5; => Affectation de la valeur 5 i


La valeur de i aprs affectation: 5
c=b+3 ; c=(b+3) ;
La priorit de loprateur daffectation est faible par rapport aux oprateurs arithmtiques et de
comparaison
c+5=x; na pas de sens

Loprateur daffectation possde une associativit de droite gauche

i=j=5;
Il est possible de fournir loprateur daffectation des oprandes de types diffrents.

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 14

Dans ce cas une conversion systmatique de la valeur de lexpression (droite) est effectue dans le
type de la variable (gauche)
Une telle conversion impose ne respecte plus ncessairement la hirarchie des types

Oprateurs dincrmentation et de dcrmentation

int i=5; x = i++; passe d'abord la valeur de i x et incrmente aprs (x :5 ; i :6)


int i=5; x = i-- ; passe d'abord la valeur de i x et dcrmente aprs (x :5, i :4)
int i=5; x = ++i ; incrmente d'abord et passe la valeur incrmente x (i :6, x :6)
int i=5; x = --i ; dcrmente d'abord et passe la valeur dcrmente x (i :4, x :4)

Remarque :

i=i+1;
n=n-1;

i++;
n-- ;

++i;
--n ;

void main()
{
int n, i=5;
n= ++i -5 ;
printf("i: %d et n: %d",i,n); /* affichage i:6 et n: 1*/
i=5;
n= i++ -5 ;
printf("\n i: %d et n : %d",i,n); /*affichage i:6 et n: 0*/
}

Les oprateurs daffectation largie

i++; remplace i=i+1;


i=i+k; remplace i+=k;
a=a*b; remplace a*=b;
+=; -=; *=; /=; %=; ces oprateurs permettent de condenser lcriture de certaines instructions

Les conversions forces par une affectation (casting)

Lors dune affectation, toutes les conversions sont acceptes par le compilateur (pb de perte de
prcision)
La conversion dun int en char sera satisfaisante si la valeur de lentier correspond un code dun
caractre

#include<stdio.h>
void main()
{
int n;
float x=2.3;
n=x+5.3;
printf("%d", n);
}
ce programme affiche 7
Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 15

Casting

Le programmeur peut forcer la conversion dune expression quelconque dans un type de son choix
int n=5, p=2; (double) (n/p);
Aura comme valeur celle de n/p convertie en double

#include<stdio.h>
void main()
{
int x=2, y=3;
printf("la somme est %f", float (x+y));
}

#include<stdio.h>
void main()
{
char A=3;
int B=4;
float C;
C = (float) A/B;
printf("%f",C);
}
=> ce programme affiche 0.7500000

#include<stdio.h>
void main()
{
char A=3;
int B=4;
float C;
C = A/B;
printf("%f",C);
}
=> ce programme affiche 0.000000

Les contenus de A et de B restent inchangs; seulement les valeurs utilises dans les
calculs sont converties

Classes de priorit
Priorit 1 (la plus forte):

()

Priorit 2:

! ++ --

Priorit 3:

*/%

Priorit 4:

+-

Priorit 5:

< <= > >=

Priorit 6:

== !=

Priorit 7:

&&

Priorit 8:

||

Priorit 9 (la plus faible):

= += -= *= /= %=

Loprateur conditionnel
If (a>b) max=a; else max=b;
max= a>b ? a:b;

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 16

Quelques fonctions prdfinies de la bibliothque math.h


COMMANDE C
EXPLICATION
X
exp(X)
fonction exponentielle
e
log(X)
logarithme naturel
ln(X), X>0
log10(X)
logarithme base 10
log10(X), X>0
Y
pow(X,Y)
X exposant Y
X
sqrt(X)
racine carre de X
pour X>0
fabs(X)
valeur absolue de X
|X|
floor(X)
arrondir en moins
int(X)
ceil(X)
arrondir en plus
fmod(X,Y)
reste rationnel de X/Y (mme signe que X) pour X diffrent de 0
sin(X) cos(X) tan(X)
sinus, cosinus, tangente de X
asin(X) acos(X) atan(X)
arcsin(X), arccos(X), arctan(X)
sinh(X) cosh(X) tanh(X)
sinus, cosinus, tangente hyperboliques de X

Les entres sorties

La bibliothque standard <stdio > contient un ensemble de fonctions qui assurent la


communication de la machine avec le monde extrieur
printf() : crire (afficher) des informations lcran
scanf() : lire (saisir) des informations au clavier
putchar() : crire un seul caractre
getchar() : lire un seul caractre au clavier

Le tableau ci aprs, prsente les principaux codes de conversion


SYMBOLE
%d ou %i
%u
%o
%x
%c
%f
%e
%s
%ld
%lu

TYPE
int
int
int
int
int
double
double
char*

IMPRESSION COMME
entier relatif
entier naturel (unsigned)
entier exprim en octal
entier exprim en hexadcimal
caractre
rationnel en notation dcimale
rationnel en notation scientifique
chane de caractres
long
unsigned long

Action sur le gabarit daffichage :


Par dfaut, les entiers sont affichs avec le nombre de caractres ncessaires (sans espaces
avant ou aprs). Les flottants sont affichs avec six chiffres aprs le point.

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 17

Un nombre plac aprs % dans le code de format prcise un gabarit daffichage, cd un


nombre de caractres utiliser. Si le nombre peut sinscrire avec moins de caractres, printf
le fera prcder dun nombre suffisants despaces ; en revanche, si le nombre ne peut
safficher convenablement dans le gabarit imparti, printf utilisera le nombre de caractres
ncessaires.
le signe (-) plac aprs le symbole % (ex : %-4d), demande de cadrer laffichage gauche au
lieu de le cadrer (par dfaut) droite.

Le caractre * figurant la place dun gabarit ou dune prcision signifie que la valeur
effective est fournie dans la liste des arguments de printf.

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 18

scanf("<format>",<AdrVar1>,<AdrVar2>, ...)
"<format>" : format de lecture des donnes
<AdrVar1>,... : adresses des variables auxquelles les donnes seront
attribues

La fonction scanf reoit ses donnes partir du fichier d'entre standard stdin (par dfaut
le clavier).
La chane de format dtermine comment les donnes reues doivent tre interprtes.
Les donnes reues correctement sont mmorises successivement aux adresses indiques
par <AdrVar1>,... .
L'adresse d'une variable est indique par le nom de la variable prcd du signe &.

Pour tous les spcificateurs, nous pouvons indiquer la largeur maximale du champ
valuer pour une donne.

Les chiffres qui passent au-del du champ dfini sont attribus la prochaine variable qui
sera lue

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 19

Lecture d'un caractre: getchar; criture dun caractre: putchar

Exemple:
Ecrire un pgm qui lit un caractere au clavier, et affiche Caractere majuscule , si le caractre
est majuscule, Caractere minuscule si le caractre est minuscule, AUTRE sinon.

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 20

Mme Wiem Yaiche Elleuch

chapitre 1 : Gnralits

Page 21