Vous êtes sur la page 1sur 90

Le langage C/C++

TOUHTOUH Samira

Ecole Nationale des Sciences Appliques dEl Jadida
samira.touhtouh@gmail.com
1


Structure de base de C
++
2
Les variables :

Une variable est un identificateur qui dsigne un type dinformation
dans un programme. Elle est situe dans un endroit prcis de la
mmoire de la machine et reprsente souvent une donne lmentaire,
cest--dire une valeur numrique ou un caractre.


Les types de donnes de base sont les suivant :

- int : valeur entire
- char : caractre simple
- float : nombre rel en virgule flottante
- double : nombre rel en virgule flottante double prcision.
3

Pour dclarer une variable, on prcise son type suivi de son
identificateur (son nom).

TYPE NOM (VALEUR);

TYPE NOM = VALEUR;

Lidentificateur dune variable est compos dun ensemble de chiffres ou
de lettres dans un ordre quelconque qui suit les rgles suivantes :

- Le premier caractre doit tre obligatoirement une lettre.
- Les minuscules ou les majuscules sont autorises et considres comme
diffrentes.
- Le caractre (underscore ou blanc soulign) est autoris.
- Il faut veiller ne pas utiliser des mots-cls ou mots rservs du langage
C
++
.
4
La dclaration dune variable peut tre assimile la cration
en mmoire dun contenant dont le type serait la taille (ou
dimension) et le contenu, la valeur.


Quand aucune valeur na encore t affecte une variable,
seule sa place est rserve. Son contenu ntant pas encore dfini, il
viendra ultrieurement.


Au cours de la rdaction dun programme, une variable peut tre
dclare tout moment, toutefois, les dveloppeurs ont pour
habitude de regrouper les dclarations, ce qui apporte une
meilleure lisibilit.
5
Initialisation et constantes

Il est possible dinitialiser une variable lors de sa dclaration comme
dans :

int n = 15 ;

Ici, pour le compilateur, n est une variable de type int dans laquelle
il placera la valeur 15 ;

La dclaration prcdente pourrait tre remplace par une
dclaration ordinaire (int n), suivie un peu plus loin dune
affectation (n=15) ; la seule diffrence rsiderait dans linstant o n
recevrait la valeur 15.

Il est possible de dclarer que la valeur dune variable ne doit pas
changer lors de lexcution du programme. Par exemple, avec :
const int n = 20 ;
6
Les oprateurs arithmtiques en C++.

Prsentation des oprateurs

Comme tous les langages, C
++
dispose doprateurs classiques binaires
(cest--dire portant sur deux oprandes ), savoir laddition (+), la
soustraction (-), la multiplication (*) et la division (/), ainsi que dun
oprateur unaire (cest--dire ne portant que sur un seul oprande)
correspondant loppos not - (comme dans -n ou dans -x+y).

Les oprateurs binaires ne sont a priori dfinis que pour deux oprandes
ayant le mme type parmi : int, long int, float, double et long double.

Ils fournissent un rsultat de mme type que leurs oprandes.
7
Le cast

Lorsque, les deus oprandes sont de type diffrent, le compilateur
prvoit une conversion suivant lordre : char > short > long >
float > double,


Le plus petit est automatiquement transform dans le plus grand,


Le rsultat de lopration sera lui aussi du type du plus grand
8
Exemple :

int a=64,b=2;
float x=1,y=2;


b=7/b;
x=7/b;
x=7/y; x=7.0/b;
x=((float)(a+1))/b;
9

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.


En C++, comme dans les autres langages, les rgles
sont naturelles et rejoignent celles de lalgbre traditionnelle ;


Les oprateurs unaires + et - ont la priorit la plus leve. On
trouve ensuite, un mme niveau, les oprateurs *, / et %. Enfin,
sur un dernier niveau, apparaissent les oprateurs binaires + et -.

10
11

En cas de priorits identiques, les calculs seffectuent de gauche
droite.



Les parenthses permettent doutrepasser ces rgles de priorit,
en forant le calcul pralable de lexpression quelles contiennent.
12
Affectation
L'oprateur d'affectation affecte une valeur une variable.

a = 6;
Affectation compose

Quand on veut modifier la valeur d'une variable en effectuant une opration
sur la valeur actuellement stocke dans cette variable, nous pouvons utiliser
des oprateurs d'affectation composs:




a += b; a = a + b;
a -= 2; a = a-2;
a /=b; a= a/b;
a *= b+1; a = a* (b+1);
13
Exemple : trouver la valeur de a
14
#include <iostream>
using namespace std;

int main ()

{
int a, b=3;
a = b;
a+=2;
cout << a;
return 0;
}
Les oprateurs relationnels

Comme tout langage, C++ permet de comparer des expressions laide
doprateurs classiques de comparaison. En voici un exemple :

2 * a > b + 5

Le rsultat de la comparaison est une valeur boolenne prenant lune des deux
valeurs true ou false.

Les expressions compares pourront tre dun type de base quelconque et
elles seront soumises aux rgles de conversion.

15
Voici la liste des oprateurs relationnels existant en C++ :
Exemple 1:
Exemple 2: a=2, b= 3, c = 6
16
(7 ==5)
(5 > 4)
(3 !=2)
(6 >= 6)
(5 < 5)
(a == 5)
(a*b >= c)
(b+4 > a*c)
((b = 2) ==a)
Les oprateurs logiques (!, &&, | |)

Loprateur ! renvoi la valeur boolenne oppose de l'valuation de son
oprande

Exemple :

!(5 == 5)
!(6 <= 4)
!true
!false

17
Loprateur | |
a b a | | b
vrai vrai vrai
vrai faux vrai
faux vrai vrai
faux faux faux
Loprateur &&
a b a && b
vrai vrai vrai
vrai faux faux
faux vrai faux
faux faux faux
Les oprateurs conditionnels

L'oprateur conditionnel value une expression retournant une valeur si cette
expression est vraie et une deuxime valeur si l'expression est value comme
fausse. Son format est le suivant:


condition ? A : B


Exemple :

#include <iostream>
using namespace std;

int main ()
{
int a,b,c;
a=2;
b=7;
c = (a>b) ? a : b;
cout << c;
return 0;
}


18
Loprateur virgule

L'oprateur virgule (,) est utilis pour sparer deux ou plusieurs expressions
qui sont inclus o une seule expression est attendue.

Exemple :

a = (b=3, b+2);
19
Oprateurs dincrmentation et de dcrmentation

Incrmentation

Cest parmi les oprations, les plus courantes en informatique. Il permet par exemple
de passer du niveau 4 au niveau 5.




Int nombreLivres; // Il y a 4 livres
++ nombreLivres; // A partir dici, il y a 5 livres
Int nombreLivres; // Il y a 4 livres
nombreLivres= nombreLivres+ 1; // A partir dici, il y a 5 livres
20
La dcrmentation

La dcrmentation est lopration inverse, soustraire 1 une variable,

Int nombreLivres(4); // il y a 4 livres
nombreLivres = nombreLivres-1; // on en enlve un, A partir dici, il y a 3 livres.



Int nombreLivres(4); // Il y a 4 livres dans la partie
-- nombreLivres; // On en enlve un a partir dici, il ya 3
21
nonc

Soient les dclarations suivantes :

int n = 5, p = 9 ;
int a ;
float x ;

Quelle est la valeur affecte aux diffrentes variables concernes par chacune
des instructions suivantes ?

a = n < p ; (1
a = n == p ; (2
a = p % n + p > n ; (3
x = p / n ; (4
x = (float) p / n ; (5
x = (p + 0.5) / n ; (6
x = (int) (p + 0.5) / n ; (7
a = n * (p > n ? n : p) ; (8
a = n * (p < n ? n : p) ; (9
22
Les entres-sorties conversationnelles de C
++

Affichage lcran avec cout

Exemple 1 :

Considrons ces instructions :

Int n = 25 ;
cout << valeur : ;
cout << n ;

Elles affichent le rsultat suivant :

valeur : 25

Nous avons utilis le mme oprateur << pour envoyer sur cout, dabord une
information de type chane, ensuite une information de type entier.

Le rle de loprateur << est manifestement diffrent dans les deux cas : dans le
premier, il a transmis les caractres de la chane, dans le second, il a procd un
formatage pour convertir une valeur binaire entire en une suite de caractre.
23
Exemple 2

Les deux instructions peuvent se condenser en une seule :

cout << valeur : ;
cout << n;


cout <<valeur : << n;



Dans un premier temps, cout reoit la chane valeur ;

Dans un deuxime temps, le cout << valeur :, cest--dire le flot cout
augment de valeur : , reoit la valeur de n.
24

cin

Le dispositif d'entre standard est en gnral le clavier. Manipulation de
l'entre standard en C++ se fait en appliquant l'oprateur d'extraction (>>)
sur le flux cin. L'oprateur doit tre suivie par la variable qui va stocker les
donnes qui va tre extrait du flux.

int n;
cin>> n;



La premire instruction dclare une variable de type int appel n, et le second
attend une entre de cin (sur le clavier) afin de le stocker dans cette variable
entire.


25
#include <iostream>
using namespace std;
int main ()
{
int i;
cout << "Entrez un entier: ";
cin >> i;
cout << "La valeur saisie est : " << i <<endl;
cout << "Le double de la valeur est : " << i*2 << endl;
return 0;
}

26
27

On peut galement utiliser cin pour demander plus d'une entre de rfrence :

cin >> n >> p ;


est quivalent :

cin n;
cin p;


28
Les instructions de contrle

Un programme est en gnral pas limite une squence linaire
d'instructions. Au cours de son processus, il peut rpter le code ou prendre
des dcisions. Pour ce faire, C
++
fournit des structures de contrle qui
servent prciser ce qui doit tre fait par notre programme, quand et dans
quelles circonstances.


Les structures de contrle permettent, de contrler lexcution du
programme en fonction de critres particuliers.



Le C et le C++ disposent de toutes les structures de contrle classique des
langages de programmation comme les tests, les boucles, etc.

29
La structure conditionnelle if

La structure conditionnelle if permet de raliser un test et dexcuter
une instruction ou non selon le rsultat de ce test. Sa syntaxe est la
suivante :



O test est une expression dont la valeur est boolenne ou entire.
Toute valeur non nulle est considre comme vraie. Si le test est
vrai, lopration est excut. Ce peut tre une instruction ou un bloc
dinstructions :

if (test) opration;
30
Exemple 1:
Exemple 2:
Si on veut utiliser plusieurs lignes dinstructions, on utilise les accolades :
31
32
If (test) opration1;
else opration2;
Nous pouvons prciser ce que nous voulons si la condition n'est pas remplie
en utilisant le mot-cl else. Sa forme est :
if (x == 100)
cout << "x is 100";
else
cout << "x is not 100";
Exemple :
La boucle for

La structure de contrle for est lune des plus importantes. Elle permet de
raliser toutes sortes de boucles et, en particulier, les boucles itrant sur
les valeurs dune variable de contrle. Sa syntaxe est la suivante :





Ce type de boucle, permet de condenser :
une initialisation ;
une condition ;
une incrmentation.



for (initialisation; test ; incrmentation) opration;
{

}
33
34
int main()
{
int compteur(0);
for (compteur = 0 ; compteur < 10 ; compteur++)
{
cout << compteur << endl;
}
return 0;
}
Exemple :
0
1
2
3
4
5
6
7
8
9
La boucle while

35
while (condition)
{

}
Tout ce qui est entre accolades sera rpt tant que la condition est vrifie.
int main()
{
int age(-1); // Nombre ngatif pour pouvoir entrer dans la
boucle
while (age < 0)
{
cout << " Entrez votre age?" << endl;
cin >> age;
}
cout << "Merci d'avoir indique un age correct. Vous
avez " << age << " ans" << endl;
return 0;
{
36
La boucle do while
Cette boucle est trs similaire la prcdente,

Mais, la condition n'est teste qu' la fin,

Le contenu de la boucle sera toujours lu au moins une fois.
do
{

} while (condition);
37
Exemple :
int main()
{
int age(0);
do
{
cout << "Entrez votre age?" << endl;
cin >> age;
} while (age < 0);
cout << "Merci d'avoir indique un age correct. Vous avez "
<< age << " ans " << endl;
return 0;
}
38
Enonc

Ecrire un programme qui calcule les racines carres de nombres fournis
en donne. Il sarrtera lorsquon lui fournira la valeur 0. Il refusera les
valeurs ngatives. Son excution se prsentera ainsi :
donnez un nombre positif : 2
Sa racine carre est : 1.414214
donnez un nombre positif : -1
svp positif
donnez un nombre positif : 5
sa racine carre est : 2.236068
donnez un nombre positif : 0

Rappelons que la fonction sqrt fournit la racine carre (double) de la
valeur (double) quon lui donne en argument




Le langage C/C++
TOUHTOUH Samira

Ecole Nationale des Sciences Appliques dEl Jadida
samira.touhtouh@gmail.com



Introduction
Introduction


Un langage de programmation

La puissance dun ordinateur vient du fait qu'il peut tre programm, c'est
dire que l'on peut lui donner, l'avance, la squence des ordres
effectuer l'un aprs l'autre.


Ces ordres, cods en binaire, sont sauvs dans un fichier nomm
excutable (.exe sous Windows).


L'ordinateur ne comprenant que des ordres cods en binaire (le langage
machine) peu pratiques d'emploi, des langages dits "volus" ont t mis au
point pour faciliter la programmation.







Le C a t dvelopp conjointement au systme d'exploitation UNIX, dans les
Laboratoires BELL, par Brian W Kernigham et Dennis M Ritchie, qui ont
dfini en au cours des annes 70, dans "The C Language", les rgles de base de
ce langage.




Le but principal tait de combiner une approche structure (et donc une
programmation facile) avec des possibilits proches de celles de l'assembleur
tout en restant standard (c'est dire pouvoir tre implant sur n'importe
quelle machine).


A la fin des annes 80, Bjarne Stroustrup cre le C
++
, qui garde toutes les
possibilits du C, l'amliorant (commentaires, constantes, passage
d'arguments par adresse, arguments par dfaut...) mais surtout en y
ajoutant les objets (encapsulation, hritage, polymorphisme, surcharge...).



Le C
++
combine donc toutes les possibilits de la programmation
classique et la puissance de l'approche objets.



Il est trs rpandu, il fait partie des langages de programmation les plus
utiliss sur la plante.


Il est rapide, ce qui en fait un langage de choix pour les applications
critiques qui ont besoin de performances.


Il est portable : un mme code source peut thoriquement tre transform
sans problme en excutable sous Windows,


Il existe de nombreuses bibliothques pour le C++. Les bibliothques sont
des extensions pour le langage. De base, le C++ ne sait pas faire grand chose
mais, en le combinant avec de bonnes bibliothques, on peut crer des
programmes 3D, rseaux, audio, fentrs, etc.


Il est multi paradigmes . Ce mot signifie qu'on peut programmer de
diffrentes faons en C
++
(POO).
Un langage du haut niveau :

C'est un langage assez loign du binaire (et donc du fonctionnement de la
machine), qui vous permet gnralement de dvelopper de faon plus
souple et rapide.



Un langage du bas niveau :

Par opposition, un langage de bas niveau est plus proche du
fonctionnement de la machine : il demande en gnral un peu plus d'efforts
mais vous donne aussi plus de contrle sur ce que vous faites.
Programmer : exemple de code C
++
Programmer

Une fois trouv lalgorithme, programmer en C
++
comporte 3 phases:

1. Editer le programme avec un diteur de texte.

2. Compiler le programme .

3. Excuter le programme.

4. TESTER et DEBUGGER
Exemple de code C
++



#include <iostream>

using namespace std;

int main()

{

cout << Bonjour" << endl;

return 0;

}

# include <iostream>

iostream signifie Input Output Stream , ce qui veut dire Flux
d'entre-sortie . Dans un ordinateur , l'entre correspond en gnral au
clavier ou la souris, et la sortie l'cran.



Include iostream nous permet d'obtenir tout ce qu'il faut pour changer des
informations avec l'utilisateur .



using namespace std;

Il indique la partie de fonctionnalit que le fichier va utiliser.



Dans la cas ou on charge plusieurs bibliothques, Certaines fonctionnalits
ont le mme nom.



Pour orienter lordinateur vers la fonction recherche , namespace a t
cre. Ce sont de dossiers noms. La ligne using namespace std; indique
quon va utiliser lespace de noms std dans la suite du fichier code.
Int main ()

C'est le cur du programme. Les programmes, sont essentiellement
constitus de fonctions. Chaque fonction a un rle et peut appeler d'autres
fonctions pour effectuer certaines actions.

Tous les programmes possdent une fonction dnomme main qui est la
fonction principale.

Une fonction a la forme suivante :

Int main ()

{

}

cout

Le rle de cout est dafficher un message lcran.


cout est fourni par iostream. Si on inclut pas iostream au dbut du
programme, le compilateur ne va connatre cout


Exemple

cout << bonjour<< endl;


Il ya 3 lments sur cette ligne :

cout : commande laffichage dun message lcran;
bonjour : indique le message afficher;

endl : cre un retour la ligne dans la console.

Il est possible de combiner plusieurs messages en une instruction :

cout << bonjour <<endl << comment allez-vous<< endl;
return

La dernire ligne est :

Return 0;

Cette instruction clt gnralement les fonctions. La plupart des
fonctions renvoient une valeur. La fonction main renvoie 0 pour
indiquer que tout sest bien pass



Commentaires


En plus du code qui donne des instructions l'ordinateur , il faut crire des
commentaires pour expliquer le fonctionnement de votre programme.



Les commentaires n'ont aucun impact sur le fonctionnement de votre logiciel :
en fait, le compilateur ne les lit pas et ils n'apparaissent pas dans le
programme gnr. Pourtant, ces commentaires sont indispensables pour
expliquer ce qu'il fait un programme.
Les diffrents type de commentaires


Les commentaires courts

Pour crire un commentaire court, sur une seule ligne, il suffit de commencer
par // puis d'crire votre commentaire.

// commentaire

Les commentaires longs

Si le commentaire tient sur plusieurs lignes, on ouvre la zone de commentaire
avec /* et on ferme avec */
Commenter le programme suivant :




#include <iostream>

using namespace std;

int main()

{

cout << Bonjour!" << endl;

return 0;
}
#include <iostream> /* inclusion dun fichier d entte ;
entte standard des entres sorties */

using namespace std ; /* spcifie que lon utilise lespace de
nommage standard */

int main ( ) // dbut du programme = fonction main

{ // ouverture de la fonction principale

cout << "Bonjour" << endl ; // instructions termines par ;

}



Structure de base de C
++
Les variables :


Une variable est un identificateur qui dsigne un type dinformation
dans un programme. Elle est situe dans un endroit prcis de la
mmoire de la machine et reprsente souvent une donne lmentaire,
cest--dire une valeur numrique ou un caractre.


Les types de donnes de base sont les suivants :

- int : valeur entire
- char : caractre simple
- float : nombre rel en virgule flottante
- double : nombre rel en virgule flottante double prcision.
Pour dclarer une variable, on prcise son type suivi de son identificateur
(son nom).

TYPE NOM (VALEUR);

TYPE NOM = VALEUR;


Lidentificateur dune variable est compos dun ensemble de chiffres ou de
lettres dans un ordre quelconque qui suit les rgles suivantes :

- Le premier caractre doit tre obligatoirement une lettre.
- Les minuscules ou les majuscules sont autorises et considres comme
diffrentes.
- Le caractre (underscore ou blanc soulign) est autoris.

La dclaration dune variable peut tre assimile la cration en
mmoire dun contenant dont le type serait la taille (ou dimension) et le
contenu, la valeur.


Quand aucune valeur na encore t affecte une variable, seule sa
place est rserve. Son contenu ntant pas encore dfini, il viendra
ultrieurement.


Au cours de la rdaction dun programme, une variable peut tre dclare
tout moment, toutefois, les dveloppeurs ont pour habitude de regrouper
les dclarations, ce qui apporte une meilleure lisibilit.
Initialisation et constantes

Il est possible dinitialiser une variable lors de sa dclaration comme dans :

int n = 15 ;

Ici, pour le compilateur, n est une variable de type int dans laquelle il
placera la valeur 15 ;

La dclaration prcdente pourrait tre remplace par une dclaration
ordinaire (int n), suivie un peu plus loin dune affectation (n=15) ; la seule
diffrence rsiderait dans linstant o n recevrait la valeur 15.

Il est possible de dclarer que la valeur dune variable ne doit pas changer
lors de lexcution du programme. Par exemple, avec : const int n = 20 ;
Les oprateurs arithmtiques en C++.

Prsentation des oprateurs

Comme tous les langages, C
++
dispose doprateurs classiques binaires ,
savoir laddition (+), la soustraction (-), la multiplication (*) et la division
(/), ainsi que dun oprateur unaire (cest--dire ne portant que sur un
seul oprande).


Les oprateurs binaires ne sont a priori dfinis que pour deux oprandes
ayant le mme type parmi : int, long int, float, double et long double.


Ils fournissent un rsultat de mme type que leurs oprandes.
Le cast

Lorsque, les deus oprandes sont de type diffrent, le compilateur prvoit
une conversion suivant lordre : char > short > long > float > double,


Le plus petit est automatiquement transform dans le plus grand,



Le rsultat de lopration sera lui aussi du type du plus grand
Exemple :

int a=64,b=2;
float x=1,y=2;

Quelle est la valeur affecte aux diffrentes variables concernes par
chacune des instructions suivantes ?

b=7/b;
x=7/b;
x=7/y; x=7.0/b;
x=((float)(a+1))/b;
Le langage C/C++
TOUHTOUH Samira

Ecole Nationale des Sciences Appliques dEl Jadida
samira.touhtouh@gmail.com

Pointeurs
Ladresse dune variable,

Lorsque une variable est dclare, lordinateur rserve une place
dans la mmoire et lui donne une tiquette qui porte le nom de la
variable.

int main()
{
int a (2);
return 0;
}


Ladresse dune variable

La mmoire dun ordinateur est constitu de plusieurs milliards de
cases. Chaque case a une adresse unique.

On peut accder une variable par deux mthodes :

- On peut passer par son nom (l'tiquette).

- On peut aussi accder la variable grce son adresse (son
numro de case).



Comment afficher une adresse ?

le symbole pour obtenir l'adresse d'une variable est l'esperluette (&)

Exemple :

#include <iostream>
using namespace std;
int main()

{
int a (2);
cout << "L'adresse est : " << &a << endl;
return 0;
}

Les pointeurs

Un pointeur est une variable qui contient l'adresse d'une
autre variable.

Un pointeur est une variable comme int et double.

Dclarer un pointeur

int *pointeur;

Pour dclarer un pointeur il faut un nom et un type.

- Le nom et celui du variable
- Et le type est le type de variable dont on veut stocker ladresse.
Exemple

double *pointeurA;
//Un pointeur qui peut contenir l'adresse d'un nombre
virgule

string *pointeurC;
//Un pointeur qui peut contenir l'adresse d'une chane de
Caractres

int const *pointeurE;
//Un pointeur qui peut contenir l'adresse d'un nombre entier constant
Il faut toujours dclarer un pointeur en lui donnant la
valeur 0


int *pointeur(0);
double *pointeurA(0);
string *pointeurC(0);
int const *pointeurE(0);

Stocker une adresse

int main()
{
int a (2);
//Une variable de type int

int *ptr(0);
//Un pointeur pouvant contenir l'adresse d'un nombre entier

ptr = &a;
//On met l'adresse de 'a' dans le pointeur 'ptr'
return 0;
}
Afficher ladresse

#include <iostream>
using namespace std;
int main()
{
int a(16);
int *ptr(0);
ptr = &a;
cout << "L'adresse de 'a' est : " << &a << endl;
cout << "La valeur de pointeur est : " << ptr << endl;
return 0;
}


Accder la valeur pointe


int main()
{
int a(2);
int *ptr(0);
ptr= &a;
cout << "La valeur est : " << *ptr << endl;
return 0;
}

Allocation automatique de la mmoire

Lors de la dclaration dune variable


I' ordinateur rserve une case mmoire, on parle de
lallocation de la mmoire.


Il remplit cette case avec la valeur fournie, initialisation
de la variable.
Allouer un espace mmoire

int *pointeur(0);
pointeur = new int;


Une fois alloue manuellement, la variable s'utilise comme
n'importe quelle autre. On doit juste se rappeler qu'il faut y
accder par le pointeur , en le drfrenant.

int *pointeur(0);
pointeur = new int;
*pointeur = 2; //On accde la case mmoire pour en modifier la
valeur
Librer la mmoire

int *pointeur(0);
pointeur = new int;
delete pointeur; //On libre la case mmoire
Exemple :

Quels rsultats fournira ce programme :

#include <iostream>
using namespace std ;
main()
{
char * ad1 ;
ad1 = "bonjour" ;
cout << ad1 << "\n" ;
ad1 = "monsieur" ;
cout << ad1 ;
}
Quels rsultats fournira ce programme :

#include <iostream>
using namespace std ;
main()
{
char * adr = "bonjour" ; /* 1 */
int i ;
for (i=0 ; i<3 ; i++) cout << adr[i] ; /* 2 */
cout << "\n" ;
i = 0 ;
while (adr[i]) cout << adr[i++] ; /* 3 */
}
Les fichiers
Flux vers les fichiers cest lire et modifier les fichiers.

L'en-tte fstream
Pour les fichiers, il faut spcifier #include <fstream>
en-haut de notre code source.

Ouvrir un fichier en criture
Les flux sont des objets, qui contiennent des
informations concernant les fichiers.

Ils offrent beaucoup de fonctionnalit comme fermer et
modifier un fichier.



#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ofstream monFichier("C:/Document/fichier.txt");
//Dclaration d'un flux permettant d'crire dans le fichier
return 0;
}
Le plus souvent, le nom du fichier est contenu dans une
chane de caractres string. Dans ce cas, il faut utiliser la
fonction c_str() lors de l'ouverture du fichier .


string const nomFichier("C:/Nanoc/scores.txt");
ofstream monFlux(nomFichier.c_str());
//Dclaration d'un flux permettant d'crire dans un fichier.
Des problmes peuvent survenir lors de l'ouverture d'un
fichier , si le fichier ne vous appartient pas ou si le disque dur
est plein par exemple.

ofstream monFlux("C:/Nanoc/fichier.txt"); //On essaye d'ouvrir le
fichier
if(monFlux) //On teste si tout est OK
{
//Tout est OK, on peut utiliser le fichier
}
else
{
cout << "ERREUR: Impossible d'ouvrir le fichier." << endl;
}


Pour pouvoir crire la fin d'un fichier , il faut le
spcifier lors de l'ouverture en ajoutant un deuxime
paramtre la cration du flux :


ofstream monFlux("C:/Nanoc/fichier.txt", ios::app);


Lire un fichier

Ouvrir un fichier en lecture

Utiliser un ifstream au lieu d'un ofstream

ifstream monFlux("C:/Nanoc/C++/fichier.txt"); //Ouverture d'un fichier
en lecture
if(monFlux)
{
//Tout est prt pour la lecture.
}
else
{
cout << "ERREUR: Impossible d'ouvrir le fichier en lecture." <<
endl;
}


Il y a trois manires diffrentes de lire un fichier :

1. Ligne par ligne, en utilisant getline() ;
2. Mot par mot, en utilisant les chevrons >> ;
3. Caractre par caractre, en utilisant get().
Lire ligne par ligne

string ligne;
getline(monFlux, ligne); //On lit une ligne complte

Lire mot par mot

double nombre;
monFlux >> nombre; //Lit un nombre virgule depuis le fichier
string mot;
monFlux >> mot; //Lit un mot depuis le fichier

Lire caractre par caractre

char a;
monFlux.get(a);