Академический Документы
Профессиональный Документы
Культура Документы
Structuré
- Le Langage C -
M.MOUSTAID
- Le Langage C - M.MOUSTAID
Sommaire
1. Introduction au langage
3. Les variables
4. Opérateurs et expressions
- Le Langage C - M.MOUSTAID
Sommaire
9. Les Fonctions
- Le Langage C - M.MOUSTAID
Introduction
L’ordinateur est une machine non intelligente, qui sait exécuter
des opérations très simples :
- Le Langage C - M.MOUSTAID
Introduction
Crée par KERNIGHAM et RITCHIE pour développer le système
d’exploitation UNIX , C est un langage compilé, c'est à dire qu'il
faut:
* Entrer le programme ou le code source dans l'ordinateur (à
l'aide d'un EDITEUR),
* le traduire en langage machine (Codes binaires
compréhensibles par l'ordinateur): c'est la compilation.
* l'exécuter et visualiser le résultat
- Le Langage C - M.MOUSTAID
Premier Programme en C
Exemple:
# include <stdio.h>
main()
{
printf(’’Bonjour!’’);
}
- Le Langage C - M.MOUSTAID
Définition d'une variable
– nom:
• Unique pour chaque variable
• Commence toujours par une lettre
• Différenciation minuscule-majuscule
– type:
• Conditionne le format de la variable en mémoire
• Peut être soit un type standard ou un type utilisateur
– valeur:
• Peut évoluer pendant l'exécution
• initialisation grâce à l'opérateur d'affectation
- Le Langage C - M.MOUSTAID
Types de variables
– charcaractère
– int entier
– short entier court
– long entier long
– float nombre décimal (réel)
– double nombre décimal de précision supérieure
– long double nombre décimal encore plus précis
– unsigned int entier non signé
- Le Langage C - M.MOUSTAID
Déclaration
• Déclaration d'une variable
Type nom_de_la_variable [= valeur]
• Exemple:
int nb;
float pi = 3.14;
char c = 'a';
long i,j,k;
double r = 6.28765;
- Le Langage C - M.MOUSTAID
LA FONCTION PRINTF
- Le Langage C - M.MOUSTAID
Éléments de base
NOTATION RESULTAT
\a cloche ou bip (alert ou audible bell)
\b Retour arrière (Backspace)
\f Saut de page (Form Feed)
\n Saut de Ligne (Line Feed)
\r Retour chariot (Carriage Return)
\t Tabulation horizontaLe (HorizontaL Tab)
\v Tabutation verticale (VerticaL Tab)
\\ \
\' ‘
\ '' ‘’
\? ?
- Le Langage C - M.MOUSTAID
Exercice
• a et b sont des entiers, a = -21430 b = 4782, calculer et
afficher a+b, a-b, a*b, a/b, a%b en format décimal, et en
soignant l’interface homme/machine.
• a/b donne le quotient de la division, a%b donne le reste de la
division.
- Le Langage C - M.MOUSTAID
Exemple
#include <stdio.h>
#include <conio.h>
void main()
{
char c;
c =‘A’; /* c est le caractere alphanumerique A */
printf("%d\n",c); /* affichage du code ASCII en decimal */
/* et retour … à la ligne */
printf("%o\n",c); /* affichage du code ASCII en base huit
/* et retour … à la ligne */
printf("%x\n",c); /* affichage du code ASCII en hexadecimal
/* et retour … à la ligne */
printf("%c\n",c); /* affichage du caractère */
/* et retour à la ligne */
puts("Pour continuer frapper une touche...");
getch(); /* Attente d'une saisie clavier */
}
- Le Langage C - M.MOUSTAID
Correction
#include <stdio.h>
#include <conio.h>
void main()
{
int a,b;
a= -21430;
b= 4782;
printf("A + B = %d\n",a+b);
printf("A - B = %d\n",a-b);
printf("A x B = %d\n",a*b);
printf("A sur B = %d\n",a/b);
printf("A mod B = %d\n",a%b);
puts("Pour continuer frapper une touche...");
getch(); /* Attente d'une saisie clavier */
}
- Le Langage C - M.MOUSTAID
LA FONCTION SCANF
• La fonction scanf permet la saisie clavier de n'importe
quel type de variable.
• Les variables à saisir sont formatées, le nom de la variable
est précédé du symbole & désignant l'adresse de la
variable .
• Tous les éléments saisis après un caractère d'espacement
(espace, tabulation) sont ignorés.
• Syntaxe :
Scanf("format",&variable)
- Le Langage C - M.MOUSTAID
LA FONCTION SCANF
- Le Langage C - M.MOUSTAID
Instruction de test simple
• Instructions de base
– instruction conditionnelle simple si alors
if (expression)
{
instructions;
}
expression est évaluée. Si le résultat est vrai alors les
instructions sont exécutées.
– exemple
int x;
printf(« Entrer x: »);
scanf(« %d »,&x);
if (x%2==0)
{
printf(« %d est paire »,x);
}
Instruction de test simple
– Instruction conditionnelle simple si alors sinon
if (expression)
{
instructions1;
}
else
{
instrutions2;
}
Si le résultat de expression est vrai alors les instructions1 sont
exécutées sinon on exécute l'ensemble instructions2
– exemple
int x;
printf(« Entrer x: »);
scanf(« %d »,&x);
if (x%2==0)
{ printf(« %d est paire »,x); }
else
{ printf(« %d est impaire »,x); }
- Le Langage C - M.MOUSTAID
instruction conditionnelle multiple
• Instructions de base
– instruction conditionnelle multiple
switch(expression)
{
case valeur1:
instructions1;break;
case valeur2:
instructions2;break;
..
.
case valeur3:
instruction3;break;
default:
instruction4;break;
}
expression est évaluée. Si le résultat vaut valeur1, alors
instruction1 est exécutée et on quitte le switch, sinon si
expression vaut valeur2, ……, sinon on va dans default pour
exécuter instruction4.
- Le Langage C - M.MOUSTAID
instruction conditionnelle multiple
– Permet de faire une sélection parmi plusieurs choix.
Exemple:
char c;
printf('' entrer votre choix '');
Scanf('' %c'‘,&c);
switch (c)
{
case 'a':
printf(" 0");
break;
case 'b':
printf("1");
break;
case 'q':
printf(" 2");
break;
default:
printf("3");
}
Instructions de base
instruction conditionnelle multiple
- Le Langage C - M.MOUSTAID
• Exercice 1 :
Ecrire un programme qui à partir d’un
nombre compris entre 1 et 7 affiche le jour
correspondant.
instruction conditionnelle multiple
• Exercice 2 :
Ecrire un programme qui permet d’entrer une date sous
forme 15 10 2002 et d’afficher la date sous forme 15 octobre
2002.
- Le Langage C - M.MOUSTAID
Instruction de répétition
– boucle pour:
for(expr1;expr2;expr3)
{
instructions
}
expr1: évaluée 1 seule fois en début de
boucle
expr2: évaluée avant chaque itération.
Si vrai alors les instructions de la boucle
sont exécutées sinon la boucle est
terminée
expr3: évaluée à la fin de chaque itération
Instruction de répétition
• Exemple:
// somme des 100 premiers entiers
int i,s;
s= 0;
for(i=0;i<=100;i = i+1)
{
s = s+i; / / ou s+=i;
}
printf(" la somme vaut: %d \n",s);
Instruction de répétition
– boucle tant que
while (expression)
{
instructions;
}
expression est évaluée avant chaque itération.
Si le résultat est vrai alors les instructions sont
exécutées sinon on sort de la boucle
– Exemple : // somme des 100 premiers entiers
int i=0,s=0;
while(i<=100)
{
s = s+i;
i = i+1;
}
printf(" la somme vaut: %d \n", s);
Instruction de répétition
– boucle répéter
do
{
instructions;
} while (expression);
expression est évaluée après chaque itération.
Si le résultat est vrai alors les instructions sont
exécutées sinon on sort de la boucle
– exemple
int n;
do
{
printf(‘’entrer un nombre positif ’’);
scanf(‘’%d ’’,&n)
} while(n<0);
Les tableaux
- Le Langage C - M.MOUSTAID
Les tableaux à une seule dimension
–définition
• Ensemble de variables de même type, de
même nom caractérisées par un index.
–déclaration
• type nom_tableau[dimension]
–exemples:
• char NOM[20];
• int T[10];
Les tableaux à une seule dimension
- Le Langage C - M.MOUSTAID
Les tableaux à deux dimensions
– Définition:
• Il s'agit d'un tableau de tableaux
– Déclaration:
• type nom_tableau[dim1][dim2]…[dimn]
– Exemples:
• char listeNoms[20][80];
• int mat[6][10];
- Le Langage C - MOUSTAID
Les tableaux à deux dimensions
• Les tableaux statiques à 2 dimensions et plus
– accès aux éléments
• nom_tableau[ind1][ind2]…[indn]
– exemples:
• livre[30][15] = 'c';
• mat[5][6] =13;
Les colonnes
T[3][2]
- Le Langage C - M.MOUSTAID T[2][3]
Les tris
- Le Langage C - M.MOUSTAID
Les fonctions et les procédures
- Le Langage C - M.MOUSTAID
Les fonctions
– Définition:
Ensemble d'instructions pouvant être appelés de manière
répétitive par un nom
– Déclaration:
Type nom_f( type arg1,type arg2, …type argn)
{
ensemble instructions
return var;
}
- Type Le type de la variable renvoyé par la fonction
(instruction return)
- nom_f est le nom de la fonction
- arg1 …argn sont les arguments envoyés à la fonction
- Le Langage C -
Les fonctions
– règles d'utilisation
• L'ordre, le type et le nombre des arguments doivent être respectés lors de
l'appel de la fonction
• L'appel d'une fonction doit être située après sa déclaration ou celle de son
prototype
(voir exemple transp suivant)
- Le Langage C -
Les fonctions
Les fonctions
– exemple:
#include<stdio.h>
#include<conio.h>
int min(int a, int b)
{
if (a <b) return a;
else return b;
}
Main()
{int i,j;
Printf(« entrer deux valeurs »);
Scanf‘(« %d%d »,&i,&j);
Printf(« le min est %d »,min(i,j));
Getch();}
- Le Langage C - M.MOUSTAID
Les fonctions
/* Calcul du maximum */
int imax(int n, int m)
{
Déclaration de la fonction
int max;
if (n>m)
max = n; Variable locale
else
max = m;
return max;
}
Valeur retournée par la fonction
- Le Langage C - M.MOUSTAID
Les fonctions
• Les fonctions
– Les paramètres se passent par valeur
• Recopie en mémoire des paramètres dans des paramètres
temporaires.
– Toute modification des paramètres dans la fonction est sans effet sur les
paramètres originelles
– Quand on quitte la fonction, les paramètres temporaires sont effacés de
la mémoire
– Recopie dans le sous programme appelant de la valeur du paramètre
retourné par la fonction return.
- Le Langage C - M.MOUSTAID
Les fonctions
• Les fonctions
– Passage d'arguments par adresse
• On passe non pas la valeur de la variable mais son adresse
• Il est donc possible par les pointeurs de modifier le contenu de
l'adresse, donc la variable originelle
• Permet de modifier plusieurs arguments à la fois dans une fonction
• Permet de passer des tableaux en argument
- Le Langage C - M.MOUSTAID
Les fonctions
• En langage C les sous-programmes s'appellent des fonctions.
• Une fonction possède un et un seul point d'entrée, mais
éventuellement plusieurs points de sortie (à l'aide du mot
return).
• Une variable connue uniquement d'une fonction ou de
main() est une variable locale.
• Une variable connue de tout le programme est une variable
globale.
FONCTIONS SANS PASSAGE
D'ARGUMENTS ET NE
RENVOYANT RIEN AU
PROGRAMME.
• Une fonction ne renvoyant rien au programme est une fonction
de type void.
Exemple 1
#include <stdio.h>
#include <conio.h>
#include <stdio.h>
#include <conio.h>
int n; /* initialisee … 0 */
void calcul()
{
static int i; /* initialisee … 0 */
i++;
printf("i=%d\n",i);
n = n+i;
}
void main()
{
calcul();
printf("n= %d\n",n);
calcul();
printf("n= %d\n",n);
printf("\nPOUR SORTIR FRAPPER UNE TOUCHE ");
getch();
}
Solution puissance(int x,int y)
#include <stdio.h>
#include <conio.h>
#include "c:\bc5\courc_C\teach_c\chap7\chap7.h" /* fichier d'en-tete */
void main()
{
int a,b,res;
printf("\nENTRER A: ");scanf("%d",&a);
printf("\nENTRER B: ");scanf("%d",&b);
res = puissance(a,b);
printf("\A PUISS B = %d\n",res);
printf("\n POUR CONTINUER FRAPPER UNE TOUCHE ");
getch();
}
Les procedures
• Une procédure ne renvoie rien alors on précise le type void
– déclaration
Void nom_P( type arg1,type arg2, …type argn)
{
ensemble instructions
}
- Le prototype void car la procédure ne retourne rien.
- nom_P est le nom de la procedure
- arg1 …argn sont les arguments envoyés à la procedure
- Le Langage C - M.MOUSTAID
Introduction au Langage C
- Le Langage C - M.MOUSTAID
• Remplir et afficher un tableau:
#include<stdio.h> void lirev(vect v,int n)
{ int i;
#include<conio.h> for(i=0;i<n;i++)
#define x 100 {
printf("Donner le element %d : ",i+1);
typedef float vect[x]; scanf("%f",&v[i]);
void ecrirev(vect v,int n) }
{ }
main()
int i; {
for(i=0;i<n;i++) vect tab;
printf("entrez la dimension");
{ scanf("%d",&n);
printf("%.2f",v[i]); lirev(tab,n);
printf("\n"); printf("\nresultat : \n");
ecrirev(tab,n);
} getch();
} }
Pointeurs en Langage C
M.MOUSTAID
- Le Langage C - M.MOUSTAID
Définition
- Le Langage C - M.MOUSTAID
Exemple 1
• Exemple
int i, j;
i = 3;
j = i;
Si le compilateur a placé la variable i à l'adresse 4831836000 en
mémoire, et la variable j à l'adresse 4831836004, on a
- Le Langage C - M.MOUSTAID
Exemple 2
• Un pointeur est un objet dont la valeur est égale à l'adresse
d'un autre objet. On déclare un pointeur par l'instruction :
type *nom-du-pointeur;
Exemple
• suivant, on définit un pointeur p qui pointe vers un entier i :
int i = 3;
int *p;
p = &i;
- Le Langage C - M.MOUSTAID
Exemple 3
main()
{
int i = 3;
int *p;
p = &i;
printf(« i= %d \n",i);
printf(« p = %d \n",p);
printf("*p = %d \n",*p);
}
Résultat d’affichage est *p = 3.
- Le Langage C - M.MOUSTAID
Exemple 4
main()
{
int i = 3, j = 6;
int *p1, *p2;
p1 = &i;
p2 = &j;
*p1 = *p2;
printf(« i = %d \n",i);
printf(« j = %d \n",j);
printf(« p1 = %d \n",p1);
printf(« p2 = %d \n",p2);
printf(« *p1 = %d \n",*p1);
printf(« *p2 = %d \n",*p2);
- Le Langage C - M.MOUSTAID
Exemple 4
- Le Langage C - M.MOUSTAID
Exemple 5
main()
{
int i = 3, j = 6;
int *p1, *p2;
p1 = &i;
p2 = &j;
p1 = p2;
}
- Le Langage C - M.MOUSTAID
Exemple 5
- Le Langage C - M.MOUSTAID
Arithmétique des pointeurs
• Si i est un entier et p est un pointeur sur un objet de
type type, l'expression p + i désigne un pointeur sur un objet
de type type dont la valeur est égale à la valeur
de p incrémentée de i * sizeof(type).
- Le Langage C - M.MOUSTAID
Arithmétique des pointeurs
main()
{
int i = 3;
int *p1, *p2;
p1 = &i;
p2 = p1 + 1;
printf("p1 = %ld \t p2 = %ld\n",p1,p2);
}
affiche p1 = 4831835984 p2 = 4831835988.
Car le type int est codé en 4octets.
- Le Langage C - M.MOUSTAID
Arithmétique des pointeurs
le même programme avec des pointeurs sur des objets de
type double :
main()
{
double i = 3;
double *p1, *p2;
p1 = &i;
p2 = p1 + 1;
printf("p1 = %ld \t p2 = %ld\n",p1,p2);
}
affiche p1 = 4831835984 p2 = 4831835992.
Car le type double est codé en 8octets.
- Le Langage C - M.MOUSTAID
Taille d’un type
• Pour savoir la taille d’un type, utiliser le code suivant:
- Le Langage C - M.MOUSTAID
Exercice
Donnez le résultat du programme suivant:
- Le Langage C - M.MOUSTAID
Chaines de caractères
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
caractères.
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
1- Déclaration
1.Un caractère : char
Char var;
Exemple de caractère : ‘a’, ‘z’, ‘\n’, …
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
3.Un pointeurs
char *NomVariable ;
NomVariable=(char*)malloc(Longueur*sizeof(char)) ;
ch = (char*)malloc(20*sizeof(char));
- Le Langage C - M.MOUSTAID
1- Déclaration
Un pointeurs
char *NomVariable ;
NomVariable=(char*)malloc(Longueur*sizeof(char)) ;
ch = (char*)malloc(20*sizeof(char));
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
2-Espace à réserver
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
L'accès à un élément d'une chaîne de caractères peut se faire de la même façon que
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
(le code ASCII de ' ' est 32, et le code ASCII de 'a' est 97)
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
Bibliotheque : <stdio.h>
la bibliothèque <stdio> nous offre des fonctions qui effectuent l'entrée et la sortie
des données.
les deux fonctions putchar et getchar, sont spécialement conçues pour l'écriture et la
les deux fonctions puts et gets, sont spécialement conçues pour l'écriture et la lecture
de chaînes de caractères.
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
Exemple:
#include<stdio.h>
#define max 100
Main()
{ char c;
Char chaine[max];
Printf(" donner un caractère : " );
c = getchar();
putchar(c);
Bibliothèque : <string.h>
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
négatif si s précède t
positif si s suit t
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
Int k;
K=strlen(s) k=7
K=strlen(t) k=13
strncat(s, t, 4) s=bonjourtout
strrev(s) s=ruojnob
- Le Langage C - M.MOUSTAID
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
Bibliothèque : <ctype.h>
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
Les fonctions de conversion suivantes fournissent une valeur du type int qui peut
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
Déclaration
char nom[nbr_L][nbr_C];
Exemple:
char JOUR[7][9];
//réserve l'espace en mémoire pour 7 chaines contenant 9 caractères.
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
initialisation
Lors de la déclaration il est possible d'initialiser toutes les composantes du tableau par
"dimanche"};
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
Exemple
int i = 2;
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
Remarque :
Exemple
"Friday".
- Le Langage C - M.MOUSTAID
VII- LES CHAINES DE CARACTERES
Exemple:
- Le Langage C - M.MOUSTAID
Exemple:
- Le Langage C - M.MOUSTAID
LES STRUCTURES
- Le Langage C - M.MOUSTAID
Définition
• Le langage C autorise la déclaration de types particuliers: les
structures . Une structure est constituée de plusieurs
éléments de même type ou non.
- Le Langage C - M.MOUSTAID
Introduction au Langage C
• Les structures de données
– déclaration
struct nom_structure
{
type1 nomchamps1;
type2 nomchamps2;
.
.
.
typeN nomchampsN;
};
111
Introduction au Langage C
• Les structures de données
– exemple et utilisation
Typedef struct
{
int x;
int y;
int z;
char nom;
} pt;
main()
{
pt p;
}
112
Introduction au Langage C
• Les structures de données
– simplification de l'écriture
struct pt
{ typedef struct pt
int x;
int y; {
int z;
char nom; Notations int x;
}; équivalentes int y;
typedef struct pt point; int z;
char nom;
main() } point;
{
point p;
}
113
Exemple:
Déclaration:
- Le Langage C - M.MOUSTAID
Exercice
• Créer la structure ci-dessus, saisir une fiche, l'afficher
- Le Langage C - M.MOUSTAID
#include <stdio.h>
#include <conio.h>
typedef struct
{
char nom[10];
char prenom[10];
int age;
float note;
}
fiche;
- Le Langage C - M.MOUSTAID
main()
{
fiche f;
printf("SAISIE D'UNE FICHE \n");
printf("NOM: ");gets(f.nom);
printf("PRENOM: ");gets(f.prenom);
printf("AGE: ");scanf("%d",&f.age);
printf("NOTE: ");scanf("%f",&f.note);
printf("\n\nLECTURE DE LA FICHE:\n");
printf("NOM: %s PRENOM: %s AGE: %d NOTE: %f",
f.nom,f.prenom,f.age,f.note);
getch();
} - Le Langage C - M.MOUSTAID
STRUCTURES ET TABLEAUX
• Ecrire le code
- Le Langage C - M.MOUSTAID
Utilisation:
Changer les informations de la fiche 2 par: "xxx" "xxx" 20 11.5.
- Le Langage C - M.MOUSTAID
Exercices :
Ex1:Créer une structure point{int num;float x;float y;}
Saisir 4 points, les ranger dans un tableau puis les afficher.
Ex2:Créer une structure Entreprise dont les champs sont:
*statut
*nombresEmploys.
Sachant que chaque employé a un nom; prénom; adresse; fonction
• Saisir les informations de l’entreprise
• Afficher les données des employés dont la fonction est
- Le Langage C - M.MOUSTAID
#include <stdio.h>
#include <conio.h>
void main()
{
point p[4]; /* tableau de points */
int i;
float xx,yy;
/* saisie */
printf("SAISIE DES POINTS\n\n");
for(i=0;i<4;i++)
{
printf("\nRELEVE N¯%1d\n",i);
p[i].num = i;
printf("X= ");scanf("%f",&xx);
printf("Y= ");scanf("%f",&yy);
p[i].x = xx;p[i].y = yy;
}
/* relecture */
printf("\n\nRELECTURE\n\n");
for(i=0;i<4;i++)
{
printf("\nRELEVE N¯%1d",p[i].num);
printf("\nX= %f",p[i].x);
printf("\nY= %f\n",p[i].y);
}
printf("\n\nPOUR SORTIR FRAPPER UNE TOUCHE ");
getch();
}
STRUCTURES ET POINTEURS
void main()
{
point p[4]; /* tableau de points */
int i;
printf("SAISIE:\n\n");
for(i=0;i<4;i++)saisie(&p[i],i);
printf("\n\nRELECTURE:\n\n");
for(i=0;i<4;i++)affiche(&p[i]);
printf("\n\nPOUR SORTIR FRAPPER UNE TOUCHE ");
getch();
}
• Calculer et afficher les racines de ax2+bx+c=0.
• Une fonction de prototype void saisie(float *aa,float
*bb,float *cc) permet de saisir a,b,c.
• Une fonction de prototype void calcul(float aa,float bb,float
cc) exécute les calculs et affiche les résultats.
• a, b, c sont des variables locales à main();
• main() se contente d'appeler saisie(&a,&b,&c) et
calcul(a,b,c).
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include "c:\bc5\courc_C\teach_c\chap7\chap7.h" /* fichier
d'en-tete */
- Le Langage C - M.MOUSTAID
Problématique
- Le Langage C - M.MOUSTAID
Ouvrir et fermer un fichier
- Le Langage C - M.MOUSTAID
fopen : ouverture du fichier
- Le Langage C - M.MOUSTAID
le paramètre "modeOuverture".
• "r" : lecture seule. Vous pourrez lire le contenu du fichier, mais pas
écrire dedans. Le fichier doit avoir été créé au préalable.
• "w" : écriture seule. Vous pourrez écrire dans le fichier, mais pas lire
son contenu. Si le fichier n'existe pas, il sera créé.
• "r+" : lecture et écriture. Vous pourrez lire et écrire dans le fichier.
Le fichier doit avoir été créé au préalable.
• "w+" : lecture et écriture, avec suppression du contenu au préalable.
Le fichier est donc d'abord vidé de son contenu, et vous écrivez et lisez
ensuite dedans. Si le fichier n'existe pas, il sera créé.
- Le Langage C - M.MOUSTAID
Exemple
int main()
{
FILE* fichier = NULL;
fichier =
fopen("test.txt", "r+");
return 0;
}
- Le Langage C - M.MOUSTAID
Exemple
int main()
{
FILE *fichier=NULL;
fichier= fopen("C:\\Program Files\\Exemple\\exercice.txt",
"r+");
return 0;
}
- Le Langage C - M.MOUSTAID
Tester l'ouverture du fichier
int main()
{
FILE* fichier = NULL;
fichier = fopen("test.txt", "r+");
if (fichier != NULL)
{
printf(" On peut lire et écrire dans le fichier");
}
else
{
printf("Impossible d'ouvrir le fichier test.txt");
}
fclose(fichier);
// On ferme le fichier qui a été ouvert
return 0;
} - Le Langage C - M.MOUSTAID
Différentes méthodes de
lecture / écriture
- Le Langage C - M.MOUSTAID
Ecrire dans le fichier
- Le Langage C - M.MOUSTAID
fputc
int main()
{
FILE* fichier = NULL;
fichier = fopen("test.txt", "w");
if (fichier != NULL)
{
fputc('A', fichier);
//Ecriture du caractère A
fclose(fichier); }
return 0;
}
- Le Langage C - M.MOUSTAID
fputs
int main()
{
FILE* fichier = NULL;
fichier = fopen("test.txt", "w");
if (fichier != NULL)
{
fputs("Salut MIPC ", fichier);
fclose(fichier);
}
return 0;
}
- Le Langage C - M.MOUSTAID
fprintf
int main()
{
FILE* fichier = NULL;
int age = 0;
fichier = fopen("test.txt", "w");
if (fichier != NULL)
{
printf("Quel age avez-vous ? ");
scanf("%d", &age);
// On l'écrit dans le fichier
fprintf(fichier, "Le Monsieur qui utilise le programme, il a %d ans",
age);
fclose(fichier);
}
return 0;}
- Le Langage C - M.MOUSTAID
Lire dans un fichier
- Le Langage C - M.MOUSTAID
fgetc
int main()
{
FILE* fichier = NULL;
char caractereActuel ;
fichier = fopen("test.txt", "r");
if (fichier != NULL)
{ // Boucle de lecture des caractères un à un
do
{ caractereActuel = fgetc(fichier);
// On lit le caractère
printf("%c", caractereActuel);
// On l'affiche
}
while (caractereActuel != EOF);
// On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
fclose(fichier);
}
return 0;
}
- Le Langage C - M.MOUSTAID
fgets
#define TAILLE_MAX 1000 // Tableau de taille 1000
int main()
{ FILE* fichier = NULL;
char chaine[TAILLE_MAX+1] = "";
// Chaîne vide de taille TAILLE_MAX
fichier = fopen("test.txt", "r");
if (fichier != NULL)
{ fgets(chaine, TAILLE_MAX, fichier);
// On lit maximum TAILLE_MAX caractères du fichier, on stocke
le tout dans "chaine"
printf("%s", chaine);
// On affiche la chaîne
fclose(fichier);
} return 0;} - Le Langage C - M.MOUSTAID
fscanf
int main()
{
FILE* fichier = NULL;
int score[3] = {0,0,0};
// Tableau des 3 meilleurs scores
fichier = fopen("test.txt", "r");
if (fichier != NULL)
{
fscanf(fichier, "%d %d %d", &score[0], &score[1], &score[2]);
printf("Les meilleurs scores sont : %d, %d et %d", score[0],
score[1], score[2]);
fclose(fichier);
}
return 0;
}
- Le Langage C - M.MOUSTAID
Fin
- Le Langage C - M.MOUSTAID