Initiation au langage C

Introduction générale au langage C
Objectif :
Décrire les concepts relatifs à l’écriture d’un programme en langage C.
Eléments de contenu :
I- Historique : 2
II- Avantages : 2
1- Universel : 2
2- Compact : 2
3- Moderne : 3
4- Près de la machine : 3
6- Portable : 3
7- Extensible : 3
III- Désavantages : 3
1- Efficience et compréhensibilité : 3
2- Limites de la portabilité : 4
3- Discipline de programmation : Les dangers de C : 4
IV- Les étapes de réalisation d’un programme C : 5
1- Activité de programmation : 5
2- Les étapes de réalisation d’un programme C : 5
3- Structure d’un programme C : 7
V- Règles générales d’écriture d’un programme C : 7
1- Les identificateurs : 7
2- Les mots-clés : 7
3- Les séparateurs : 8
4- Les commentaries : 8
I- Historique :
Dans les dernières années, aucun langage de programmation n'a pu se vanter d'une croissance en popularité comparable à celle du langage C et de son jeune frère C++. L'étonnant dans ce fait est que le langage C n'est pas un nouveau-né dans le monde informatique, mais qu'il trouve ses sources en 1972 dans les 'Bell Laboratories': Pour développer une version portable du système d'exploitation UNIX, Dennis M. Ritchie a conçu ce langage de programmation structuré, mais très 'près' de la machine.
Le succès des années qui suivaient et le développement de compilateurs C par d'autres maisons ont rendu nécessaire la définition d'un standard actualisé et plus précis. En 1983, le 'American National Standards Institute' (ANSI) chargeait une commission de mettre au point 'une définition explicite et indépendante de la machine pour le langage C', qui devrait quand même conserver l'esprit du langage. Le résultat était le standard ANSI-C.
En 1983 un groupe de développeurs de AT&T sous la direction de Bjarne Stroustrup a créé le langage C++. Le but était de développer un langage qui garderait les avantages de ANSI-C (portabilité, efficience) et qui permettrait en plus la programmation orientée objet. Depuis 1990 il existe une ébauche pour un Standard ANSI-C++. Entre-temps, AT&T a développé deux compilateurs C++ qui respectent les nouvelles déterminations de ANSI et qui sont considérés comme des quasi-standards.
II- Avantages :
Le grand succès du langage C s'explique par les avantages suivants; C est un langage :
1- Universel :
Le langage C n'est pas orienté vers un domaine d'applications spéciales, comme par exemple FORTRAN (applications scientifiques et techniques) ou COBOL (applications commerciales ou traitant de grandes quantités de données).
2- Compact :
Le langage C est basé sur un noyau de fonctions et d'opérateurs limité, qui permet la formulation d'expressions simples, mais efficaces.
3- Moderne :
Le langage C est un langage structuré, déclaratif et récursif; il offre des structures de contrôle et de déclaration comparables à celles des autres grands langages de ce temps (FORTRAN, ALGOL68, PASCAL).
4- Près de la machine :
Comme C a été développé en premier lieu pour programmer le système d'exploitation UNIX, il offre des opérateurs qui sont très proches de ceux du langage machine et des fonctions qui permettent un accès simple et direct aux fonctions internes de l'ordinateur (par .exp: la gestion de la mémoire).
6- Portable :
En respectant le standard ANSI-C, il est possible d'utiliser le même programme sur tout autre système (autre hardware, autre système d'exploitation), simplement en le recompilant.
7- Extensible :
Le langage C ne se compose pas seulement des fonctions standards ; il est enrichi par des bibliothèques de fonctions privées ou livrées par de nombreuses maisons de développement.
III- Désavantages :
Evidemment, rien n'est parfait. Jetons un petit coup d'oeil sur le revers de la médaille:
1- Efficience et compréhensibilité :
En C, nous avons la possibilité d'utiliser des expressions compactes et efficientes. D'autre part, nos programmes doivent rester compréhensibles pour nous-mêmes et pour d'autres. Comme nous allons le constater sur les exemples suivants, ces deux exigences peuvent se contredire réciproquement.
Exemple :
Les deux lignes suivantes impriment les N premiers éléments d'un tableau A[], en insérant un espace entre les éléments et en commençant une nouvelle ligne après chaque dixième chiffre:
for (i=0; i<n; i++)
printf("%6d%c", a[i], (i%10==9)?'\n':' ');
Cette notation est très pratique, mais plutôt intimidante pour un débutant. L'autre variante, plus près de la notation en Pascal, est plus lisible, mais elle ne profite pas des avantages du langage C:
for (i=0; i<n; i=i+1)
{
printf("%6d", A[i]);
if ((i%10) == 9)
printf("\n");
else
printf(" ");
}
2- Limites de la portabilité :
La portabilité est l'un des avantages les plus importants de C: en écrivant des programmes qui respectent le standard ANSI-C, nous pouvons les utiliser sur n'importe quelle machine possédant un compilateur ANSI-C. D'autre part, le répertoire des fonctions ANSI-C est assez limité. Si un programmeur désire faire appel à une fonction spécifique de la machine (par .exp: utiliser une carte graphique spéciale), il est assisté par une foule de fonctions 'préfabriquées', mais il doit être conscient qu'il risque de perdre la portabilité. Ainsi, il devient évident que les avantages d'un programme portable doivent être payés par la restriction des moyens de programmation.
3- Discipline de programmation : Les dangers de C :
Nous voici arrivés à un point crucial: C est un langage proche de la machine, donc dangereux et bien que C soit un langage de programmation structurée, il ne nous force pas à adopter un certain style de programmation. Dans un certain sens, tout est permis et la tentation de programmer du 'code spaghetti' est grande. (même la commande 'goto', si redoutée par les puristes ne manque pas en C). Le programmeur a donc beaucoup de libertés, mais aussi des responsabilités: il doit veiller lui-même à adopter un style de programmation propre, solide et compréhensible.
IV- Les étapes de réalisation d’un programme C :
1- Activité de programmation :
L’activité de programmation pet se résumer selon le schéma suivant :
2- Les étapes de réalisation d’un programme C :
L’environnement de Turbo C appelé « environnement intégré » permet le développement complet de programmes, de leur saisie (écriture), à leur exécution en passant par leur compilation et leur édition de liens. On distingue alors quatre étapes :
Ecriture de programme ou édition : Il s’agit de la phase de saisie du texte du programme, puis sa sauvegarde sous un nom d’extension « .c ». Ce fichier sera appelé code source ou fichier source (Exp : test.c).
Compilation : Cette étape consiste à analyser syntaxiquement le programme source et à le traduire en langage machine (par le compilateur). Le fichier produit comme résultat est appelé code objet ayant pour extension « .obj » (Exp : test.obj).
Edition de liens : Le code objet créé au cours de la phase de compilation, bien que constitué d’instructions en langage machine, n’est pas directement exécutable. Il lui manque pour cela un ensemble de modules objets correspondant aux fonctions appelées par le programme déjà écrit (fonctions déjà prédéfinies au niveau de la bibliothèque du langage) : C’est le rôle de l’éditeur de liens qui effectuera l’incorporation de ces modules au niveau du programme. Le résultat de l’édition de liens est le programme exécutable ayant pour extension « .exe » (Exp : test.exe).
Exécution : C’est la phase d’appel du programme (version exécutable) par son nom pour avoir les résultats.
En résumé, on a :
Lancement du Programme
Remarque : Il est conseillé d’écrire des programmes où il y a des commentaires pour les rendre plus lisibles et plus compréhensibles.
3- Structure d’un programme C :
Un programme C est une suite de fonctions, chacune commence par « {« et se termine par « } » et dont la fonction représentant le programme principal s’appelle « main ( ) ». La structure d’un programme C se présente comme suit :
Void main()
{
… // Déclarations
… // Instructions
…
}
fonction1(…)
{
…
…
}
V- Règles générales d’écriture d’un programme C :
1- Les identificateurs :
Ils servent à désigner les différents objets manipulés par le programme (variables, fonctions,…). C’est une suite de caractères alphanumériques commençant obligatoirement par une lettre.
Remarques :
- Le caractère « _» est considéré comme une lettre.
- Le langage C fait la différence entre les lettres majuscules et les lettres minuscules.
- La longueur d’un identificateur en langage C est fixée à 32 caractères (on peut la modifier avec Option/Compiler/Source/Identifier/Length).
2- Les mots-clés :
Ils représentent l’ensemble des mots de déclaration de types de variables et de types de fonctions et bien d’autres mots (void, char, int, if, for,…).
3- Les séparateurs :
Ils représentent l’ensemble des caractères qu’on utilise pour séparer les identificateurs, les différentes instructions,…(, ; …).
4- Les commentaries :
Le langage C autorise l’utilisation des commentaires notés entre « /* » et « */ » ou précédé par « // » s’il s’agit d’un commentaire sur une seule ligne, mais il n’accepte pas les commentaires imbriqués.
chapitre 2 :Types de base en langage C
Objectif :
Expliquer les concepts relatifs aux types de base et aux déclaration des variables en langage C.
Eléments de contenu :
I- Introduction : 10
II- Le type Entier : 10
III- Le type float : 11
IV- Le type char : 11
I- Introduction :
En C il existe quatre types de base :
- Les entiers (1, 2, -5, 157, etc.) : type int.
- Les nombres en points flottants (325, 45.14, 3.14, -47.1245, etc.) : type float.
- Les textes : caractères ou chaînes (‘A’, « Bonjour », etc.) type char.
- Les pointeurs représentent une adresse mémoire contenant de l’information.
II- Le type Entier :
Ce type représente les données entières. La déclaration d’une variable entière doit être de la forme :
int nom_variable ;
C permet aussi de préciser si les entiers doivent être de types longs (Long int) ou de type court (Short int). Ces extensions permettent de choisir les valeurs maximales et minimales que peuvent contenir les variables. La différence provient du nombre d’octets utilisés pour représenter la variable en mémoire :
- Deux octets pour int et short int.
- Quatre octets pour long int.
C permet la précision du signe de la variable. Si la variable ne peut contenir que des valeurs positives ou nulles on utilise unsigned int.
Le tableau suivant résume les différentes valeurs pour chaque type :
Type | Valeur minimale | Valeur maximale |
int | -32 768 | 32 767 |
long int | -2 147 483 648 | 2 147 483 647 |
unsigned int | 65 535 | |
unsigned long int | 4 294 967 295 |
Remarque :
Il est possible de préciser qu’une constante entière doit être de type long. Il suffit de faire suivre cette constante de la lettre L.
Exemple :
long i ;
…
i=587L ;
III- Le type float :
Ce type représente les données numériques réelles. La déclaration d’un tel type de variables sera de la forme :
float nom_variable ;
Il y a également une extension du type float, il s’agit du type double.
Le tableau suivant résume les différentes valeurs pour chaque type :
Type | Valeur minimale | Valeur maximale |
float | 3.4E-38 | 3.4E-38 |
double | 1.7E-308 | 1.7E+308 |
NB : 3.4E-38 signifie 3.4 * 10 exposant –38.
Remarques :
- L’ensemble entier est un sous type du type réel.
- Les calculs sur les nombres réels prennent plus de temps, il est conseillé de n’utiliser ces nombres que si c’est vraiment nécessaire.
IV- Le type char :
C permet d’utiliser des variables caractères et des textes. La déclaration d’une variable caractère doit être de la forme :
char nom_variable ;
Les valeurs possibles pour ce type de variables correspondent aux caractères ASCII. Un caractère est représenté en mémoire par un seul octets.
Exemple :
char c ;
c=’A’ ;
C offre également la possibilité de définir et de manipuler des variables textes. Cela peut se faire de deux façon : soit en précisant la longueur lors de la déclaration, soit en ne précisant pas cette longueur.
Pour le premier cas, la déclaration prend la forme suivante :
Char nom_du_texte[longueur du texte]
Exemple :
Char ch1[10] ;
La variable ch1 peut contenir un texte de 9 caractères. Le dixième étant réservé par l’ordinateur pour signaler la fin du texte.
Pour assigner une valeur texte à une variable de ce type, il faut utiliser une fonction spéciale. Il s’agit de la fonction prédéfinie strcpy dont la syntaxe est la suivante :
strcpy ( nom_variable, valeur_texte) ;
nom_variable : c’est une variable déclarée comme une chaîne de caractères.
Valeur_texte : correspond à la valeur que l’on veut assigner à la variable.
Exemple :
char texte[30] ;
strcpy( texte, « ceci est un exemple ») ;
Pour le second cas, il s’agit de déclarer un pointeur vers un ensemble de caractères. La déclaration prend la forme suivante :
char *nom_du_texte ;
Exemple :
char *ch1 ;
ch1= « exemple » ;
Remarques :
- Dans le premier cas, la place nécessaires pour la représentation de la variable dans la mémoire de l’ordinateur, est réservée définitivement lors de la déclaration.
- Dans le second cas, la place n’est réservée qu’au moment où l’on affecte une valeur à la variable.
- Le deuxième type est donc le plus souple à utiliser, car il ne nécessite pas de connaître la longueur maximale des valeurs que l’on va assigner à la variable.
chapitre 3 : Opérateurs et expressions en langage C
Objectif :
Distinguer les différents opérateurs et expressions relatifs au langage C.
Eléments de contenu :
I- Introduction : 14
II- Les opérateurs arithmétiques : 14
III- Les opérateurs de comparaison : 15
IV- Les opérateurs logiques (Booléens) : 16
V- Les opérateurs d’affectation : 16
VI- Les opérateurs d’incrémentation : 16
VII- Les opérateurs d’affectation élargie : 17
I- Introduction :
Qu’est ce qu’un opérateur ?
Le langage C dispose d’une multitude d’opérateurs. Cette richesse se manifeste tout d’abord au niveau des opérateurs classiques (arithmétiques, relationnels, logiques) ou moins classiques (manipulation de bits). C dispose aussi d’un important éventail d’opérateurs originaux d’affectation et d’incrémentation.
Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, On distingue plusieurs types d'opérateurs:
- les opérateurs de calcul.
- les opérateurs d'assignation.
- les opérateurs d'incrémentation.
- les opérateurs de comparaison.
- les opérateurs logiques.
- les opérateurs bit à bit.
II- Les opérateurs arithmétiques :
Les opérateurs arithmétiques ou de calcul permettent de modifier mathématiquement la valeur d'une variable. Ces opérateurs sont représentés au niveau du tableau suivant :
Opérateur | Désignation | Effet | Exemple | Résultat (avec x valant 7) |
+ | Opérateur d'addition | Additionne deux valeurs | x+3 | 10 |
- | Opérateur de soustraction | Soustrait deux valeurs | x-3 | 4 |
* | Opérateur de multiplication | Multiplie deux valeurs | x*3 | 21 |
/ | Opérateur de division | Divise deux valeurs | x/3 | 2.3333333 |
% | Opérateur modulo | Donne le reste de la division entière | x%3 | 1 |
- | Moins unaire | Donne le signe moins au nombre devant lequel il est mis | -x | -7 |
En utilisant ces opérateurs, on peut écrire des expressions arithmétiques. Pour les évaluer, il faut respecter les règles de priorité suivantes :
- Si l’expression contient des parenthèses, les expressions se trouvant entre ces dernières seront évaluées en premier lieu.
- Si l’expression ne contient pas de parenthèses, l’évaluation se fait de gauche à droite en respectant l’ordre de priorité suivant :
- Le moins unaire.
- La multiplication (*), la division (/), le modulo (%).
- L’addition (+), la soustraction (-).
III- Les opérateurs de comparaison :
Le langage C permet de comparer des expressions à l’aide d’opérateurs classiques de comparaison (ou relationnels). Le résultat de la comparaison n’est pas une valeur booléenne, mais un entier qui vaut :
- 0 si le résultat de la comparaison est faux.
- 1 si le résultat de la comparaison est vrai.
Opérateur | Désignation | Effet | Exemple | Résultat (avec x valant 7) |
= = | Opérateur d'égalité ![]() | Compare deux valeurs et vérifie leur égalité | x= =3 | Retourne 1 si x est égal à 3, sinon 0. Ici, retourne 0. |
< | Opérateur d'infériorité stricte | Vérifie qu'une variable est strictement inférieure à une valeur | x<3 | Retourne 1 si x est inférieur à 3, sinon 0. Ici retourne 0. |
<= | Opérateur d'infériorité | Vérifie qu'une variable est inférieure ou égale à une valeur | x<=3 | Retourne 1 si x est inférieur à 3, sinon 0. Ici retourne 0. |
> | Opérateur de supériorité stricte | Vérifie qu'une variable est strictement supérieure à une valeur | x>3 | Retourne 1 si x est supérieur à 3, sinon 0. Ici retourne 1. |
>= | Opérateur de supériorité | Vérifie qu'une variable est supérieure ou égale à une valeur | x>=3 | Retourne 1 si x est supérieur ou égal à 3, sinon 0. Ici retourne 1. |
!= | Opérateur de différence | Vérifie qu'une variable est différente d'une valeur | x!=3 | Retourne 1 si x est différent de 3, sinon 0. Ici retourne 1. |
Les opérateurs de comparaison sont moins prioritaires que les opérateurs arithmétiques.
Remarque : Le langage C ne possède pas de type booléen.
IV- Les opérateurs logiques (Booléens) :
Le langage C dispose de trois opérateurs logiques :
Opérateur | Dénomination | Effet | Syntaxe |
|| | OU logique | Vérifie qu'une des conditions est réalisée | ((condition1)||(condition2)) |
&& | ET logique | Vérifie que toutes les conditions sont réalisées | ((condition1)&&(condition2)) |
! | NON logique | Inverse l'état d'une variable booléenne (retourne la valeur 1 si la variable vaut 0, 0 si elle vaut 1) | (!condition) |
Remarque : Toute valeur non nulle correspond à vrai.
L’opérateur || est moins prioritaire que l’opérateur &&, alors que l’opérateur ! est le plus prioritaire.
Les opérateurs logiques sont moins prioritaires que les opérateurs de comparaison.
V- Les opérateurs d’affectation :
L’opération d’affectation consiste à mettre une valeur dans un variable déjà déclarée. C'est-à-dire préciser la donnée qui va être stockée à l'emplacement mémoire qui a été réservé lors de la déclaration.
Pour cela on utilise l'opérateur d'affectation "=" : Nom_de_la_variable = valeur;
Pour stocker le caractère B dans la variable que l'on a appelée Caractere, il faudra écrire: Caractere = 'B'. Il est bien évident qu'il faut avoir préalablement déclaré la variable en lui affectant le type char: char Caractere;
Remarque : L‘opérateur d’affectation possède une associativité de droite à gauche.
Exemple : i= j = 5, c’est comme si on avait fait : j = 5 puis i = 5.
VI- Les opérateurs d’incrémentation :
Ce type d'opérateur permet de facilement augmenter ou diminuer d'une unité la valeur d’une variable. Ces opérateurs sont très utiles pour des structures telles que des boucles, qui ont besoin d'un compteur (variable qui augmente de un en un).
Un opérateur de type x++ permet de remplacer des notations lourdes telles que x=x+1.
Opérateur | Dénomination | Effet | Syntaxe | Résultat (avec x valant 7) |
++ | Incrémentation | Augmente d'une unité la variable | x++ | 8 |
-- | Décrémentation | Diminue d'une unité la variable | x-- | 6 |
VII- Les opérateurs d’affectation élargie :
Ces opérateurs permettent de simplifier des opérations telles que ajouter une valeur à une variable et stocker le résultat dans la même variable. Une telle opérations s'écrirait habituellement de la façon suivante par exemple: x=x+2. Avec les opérateurs d'affectation élargie, il est possible d'écrire cette opération sous la forme suivante: x+=2. Ainsi, si la valeur de x est 7 avant opération, elle sera de 9 après...
Les autres opérateurs du même type sont les suivants:
Opérateur | Effet |
+= | additionne deux valeurs et stocke le résultat dans la variable (à gauche) |
-= | soustrait deux valeurs et stocke le résultat dans la variable |
*= | multiplie deux valeurs et stocke le résultat dans la variable |
/= | divise deux valeurs et stocke le résultat dans la variable |
chapitre 4 : Les entrées / sorties en langage C
Objectif :
Décrire les différentes fonctions d’E/S utiles en langage C.
Eléments de contenu :
I- Introduction : 19
II- La fonction scanf : 19
III- La fonction gets : 20
IV- La fonction getch() : 21
V- La fonction printf : 21
VI- La fonction puts : 23
VII- La fonction putchar : 23
I- Introduction :
Le but général d’un programme est de traiter un certain nombre de données et de produire des résultats. Les données sont fournies au programme via des instructions d’entrées et les résultats sont répercutés vers l’extérieur via des instructions de sorties.
Ces instructions d’entrées / sorties ou I/O (Input/Output) transmettent des informations entre la mémoire de l’ordinateur et un support extérieur. Ce support peut être dans le cas d’une instruction d’entrée :
- Le clavier
- Un fichier disque
- Une souris
- Un instrument de mesure quelconque, …
Et dans le cas d’une instruction de sortie :
- L’écran
- Un fichier disque
- Une imprimante
Dans le langage C, les entrées / sorties se font par l’intermédiaire de fonctions standards. Dans la suite nous présenterons des fonctions permettant d’introduire les données à partir du clavier et d’afficher le résultat sur l’écran.
II- La fonction scanf :
Cette fonction lit une liste de variables selon un format donné. Sa syntaxe générale est la suivante :
scanf("<format>",<AdrVar1>,<AdrVar2>, ...)
Avec:
- "<format>" : format de lecture des données.
- <AdrVar1>,... : adresses des variables auxquelles les données seront attribuées
L'adresse d'une variable est indiquée par le nom de la variable précédé du signe &.
Spécificateurs de format pour scanf :
SYMBOLE | LECTURE D'UN(E) | TYPE |
%d ou %i | entier relatif | int* |
%u | entier naturel (unsigned) | int* |
%o | entier exprimé en octal | int* |
%b | entier exprimé en hexadécimal | int* |
%c | caractère | char* |
%s | chaîne de caractères | char* |
%f ou %e | rationnel en notation décimale ou exponentielle (scientifique) | float* |
Le symbole * indique que l'argument n'est pas une variable, mais l'adresse d'une variable de ce type.
On peut placer la longueur de k=la variable entre le signe % et la lettre. Ainsi « %3d » indique que l’on va lire un entier de 3 chiffres.
Un blanc mis entre deux spécifications de format signifie que l’on peut mettre autant de blanc ou de lignes que l’on veut entre les valeurs à lire. Si l’on sépare les spécifications par une virgule, alors les valeurs à lire seront séparées par des virgules. Lorsque la liste des données entrées est complète, il faut, pour signaler la fin de cette liste, taper la touche Enter.
Exemple :
int i ;
float r ;
char c ;
scanf (“%d %f %c », &i, &r, &c) ;
scanf (“%d,%f ,%c », &i, &r, &c) ;
- Dans le premier cas les valeurs à lire pourraient être : 5487 2.1456 d
- Dans le deuxième cas les valeurs à lire pourraient être : 54,3.14,f
III- La fonction gets :
Cette fonction est utilisée pour la lecture de chaîne de caractères. Sa syntaxe générale est la suivante :
gets(nom de chaîne)
Lorsqu’on lit une chaîne de caractère avec l’instruction scanf(), la lecture s’arrête dès que l’on rencontre un blanc. Avec la fonction gets(), la lecture s’effectue jusqu’à ce que la touche Enter soit enfoncée.
Remarque :
Pour lire une variable de type pointeur vers un ensemble de caractère (*char), il faut affecter à cette variable l’adresse renvoyée par gets().
Exemples :
char c[20] ;
gets (c) ;
ou encore
char*c, *aux ;
c=gets(aux) ;
IV- La fonction getch() :
Cette fonction lit un caractère unique. La valeur renvoyée par la fonction correspond au caractère lu. Sa syntaxe générale est la suivante :
getch(nom du caractère)
Exemple :
char c ;
c=getch() ;
V- La fonction printf :
Cette fonction écrit des informations selon un format donné. Sa syntaxe générale est la suivante :
printf("<format>",<Expr1>,<Expr2>, ... )
Avec :
- "<format>" : format de représentation
- <Expr1>,... : variables et expressions dont les valeurs sont à représenter
La partie "<format>" est en fait une chaîne de caractères qui peut contenir:
- du texte
- des séquences d'échappement
- des spécificateurs de format
Les spécificateurs de format indiquent la manière dont les valeurs des expressions <Expr1..N> sont imprimées.
La partie "<format>" contient exactement un spécificateur de format pour chaque expression <Expr1..N>.
Les spécificateurs de format commencent toujours par le symbole % et se terminent par un ou deux caractères qui indiquent le format d'impression.
Spécificateurs de format pour printf :
SYMBOLE | TYPE | IMPRESSION COMME |
%d ou %i | int | entier relatif |
%u | int | entier naturel (unsigned) |
%o | int | entier exprimé en octal |
%x | int | entier exprimé en hexadécimal |
%c | int | caractère |
%f | float | rationnel en notation décimale |
%e | float | rationnel en notation scientifique |
%s | char* | chaîne de caractères |
On peut insérer des séquences spéciales appelées « séquences espaces », qui permettent de contrôler l’affichage des données.
Les principales espaces sont :
- \n : Passage à la ligne suivante.
- \r : Retour du curseur en début de ligne.
- \b : Déplacement du curseur d’un caractère vers la droite.
- \f : Déplacement à la page suivante.
- \t : Déplacement du curseur d’une tabulation vers la droite.
- \a : Déclenchement d’un signal sonore.
Remarque :
Si on veut afficher le caractère \, on double ce caractère dans la chaîne à afficher, c’est à dire qu’on met \\.
Exemple :
int i,
printf(« Entrer une valeurs :\n ») ;
scanf(« %d », &i) ;
i=i*2;
printf(“valeur *2=%d”, i);
VI- La fonction puts :
Cette fonction affiche une chaîne de caractères. Sa syntaxe générale est la suivante :
puts(nom_de_chaîne)
La fonction puts affiche « nom_de_chaîne » et passe automatiquement à la ligne suivante.
Exemple :
puts(« ceci est un programme C ») ;
VII- La fonction putchar :
Cette fonction affiche une caractère. Sa syntaxe générale est la suivante :
putchar(élément)
Où élément est une variable de type caractère ou une valeur caractère.
Exemple :
char c=’a’ ;
putchar(c) ;
putchar(‘B’);