Les entrées sorties en C/C++



Documents pareils
TP : Gestion d une image au format PGM

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

Programmation système I Les entrées/sorties

Rappels Entrées -Sorties

Algorithmique et Programmation, IMA

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Dans le chapitre 1, nous associions aux fichiers ouverts des descripteurs de fichiers par lesquels nous accédions aux fichiers.

Programmation système de commandes en C

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Introduction au langage C

Cours de C/C++ par la pratique. Hugues Talbot

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Chap III : Les tableaux

Les chaînes de caractères

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

COMPARAISONDESLANGAGESC, C++, JAVA ET


V- Manipulations de nombres en binaire

Les structures. Chapitre 3

Structure d un programme

Le langage C. Séance n 4

Claude Delannoy. 3 e édition C++

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Cours Informatique 1. Monsieur SADOUNI Salheddine

Chapitre 1 : La gestion dynamique de la mémoire

Représentation d un entier en base b

I. Introduction aux fonctions : les fonctions standards

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Bases de programmation. Cours 5. Structurer les données

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Programmation en langage C

GESTION DES FICHIERS C/UNIX

Programmation Classique en langage C

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Initiation. àl algorithmique et à la programmation. en C

Compléments de documentation Scilab : affichage de texte et formatage de nombres

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP 1. Prise en main du langage Python

SUPPORT DE COURS. Langage C

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours de Système : Gestion de Fichiers

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Les fichiers. Chapitre 4

Cours d Algorithmique et de Langage C v 3.0

Organigramme / Algorigramme Dossier élève 1 SI

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Programmation impérative

Programmation système en C/C++

UE C avancé cours 1: introduction et révisions

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

1 Lecture de fichiers

Architecture des ordinateurs

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Introduction à l algorithmique et à la programmation M1102 CM n 3

Premiers Pas en Programmation Objet : les Classes et les Objets

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

BTS IRIS Cours et Travaux Pratiques. Programmation C. A. Lebret, TSIRIS, Lycée Diderot, 1995/06. en conformité avec le référentiel du BTS IRIS

Analyse de sécurité de logiciels système par typage statique

Le système de gestion des fichiers, les entrées/sorties.

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

La mémoire. Un ordinateur. L'octet. Le bit

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Logiciel de Base. I. Représentation des nombres

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Algorithmique et programmation : les bases (VBA) Corrigé

Présentation du langage et premières fonctions

Langage Éric Guérin 5 octobre 2010

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

GOL502 Industries de services

Informatique Générale

PROJET ALGORITHMIQUE ET PROGRAMMATION II

INITIATION A LA PROGRAMMATION

Anis ASSÈS Mejdi BLAGHGI Mohamed Hédi ElHajjej Mohamed Salah Karouia

Introduction à MATLAB R

Cours d initiation à la programmation en C++ Johann Cuenin

IRL : Simulation distribuée pour les systèmes embarqués

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Utilisation d objets : String et ArrayList

Recherche dans un tableau

Représentation des Nombres

Le prototype de la fonction main()

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

ALGORITHMIQUE ET PROGRAMMATION En C

Programmation en C/C++

Algorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence

R01 Import de données

Cours 14 Les fichiers

Programmation C++ (débutant)/instructions for, while et do...while

Les structures de données. Rajae El Ouazzani

Les débordements de tampons et les vulnérabilités de chaîne de format 1

Logiciel de base. Première année ENSIMAG

Création et Gestion des tables

Plan du cours. Historique du langage Nouveautés de Java 7

Notions fondamentales du langage C# Version 1.0

Transcription:

Les entrées sorties en C/C++ Dans ce chapitre, nous allons voir les fonctions d entrée/sortie du langage C++, extension du langage C. Écriture sur la sortie standard Fonction printf et opérateur << Exemple 1 // indispensable pour utiliser cout int main() cout << "bonjour"; // équivalent à printf("bonjour"); du langage C - cout est un flot de sortie prédéfini associé à la sortie standard (stdout du C). - << est un opérateur dont l opérande de gauche (cout) est un flot et l opérande de droite, une expression de type quelconque. L instruction "cout << " précédente peut être interprétée comme ceci : le flot cout reçoit la valeur "bonjour". Exemple 2 // indispensable pour utiliser cout int main() int n = 25; cout << "valeur: "; cout << n; Noter l utilisation de // pour les commentaires de fin de ligne en C++ Le résultat serait : valeur: 25 1

Exemple 3 Les instructions cout << "valeur: "; cout << n; sont équivalentes à cout << "valeur: " << n; Exemple 4 int main() int n = 25; char c = 'a'; char *ch = "bonjour"; double x = 12.3456789; cout << "valeur de n : " << n << "\n"; cout << "valeur de c : " << c << "\n"; cout << "chaîne ch : " << ch << "\n"; cout << "valeur de x : " << x << "\n"; L exécution devrait donner : valeur de n : 25 valeur de c : a chaîne ch : bonjour valeur de x : 12.3456789 Lecture sur l entrée standard Fonction scanf et opérateur >> Lecture en C : #include <stdio.h> scanf ( Format, Liste des adresses des variables); 2

Lecture en C++ : cin >> Var1 >> Var2 >> >> VarN; cin est le flot d entrée connectée à l entrée standard, le clavier. Il correspond au fichier prédéfini stdin du langage C. Exemple En C : #include <stdio.h> float valeur1, valeur2, valeur3; printf ("entrez 3 valeurs : "); scanf ("%f%f%f", &valeur1, &valeur2, &valeur3); En C++ : float valeur1, valeur2, valeur3; cout << "entrez 3 valeurs : "; cin >> valeur1 >> valeur2 >> valeur3; Noter que contrairement à ce qui se passait pour scanf(), la lecture d un caractère sur cin commence par sauter les séparateurs. Nous verrons plus tard comment lire directement ces caractères. Exemples int n; float x; char t[80+1]; 3

do cout << "donner un entier, une chaîne et un flottant : "; cin >> n >> t >> x; cout << "merci pour " << n << ", " << t << " et " << x << "\n"; while (n); Exécution: donner un entier, une chaîne et un flottant : 15 bonjour 8.25 merci pour 15, bonjour et 8.25 donner un entier, une chaîne et un flottant : 15 bonjour 8.25 merci pour 15, bonjour et 8.25 donner un entier, une chaîne et un flottant : 0 bye 0 merci pour 0, bye et 0 Noter l usage des séparateurs. char t[80+1]; // pour conserver les caractères lus sur cin int i = 0; // position courante dans le tableau t cout << "entrez une suite de caractères terminée par un point.\n"; do cin >> t[i]; while ( t[i++]!= '.'); cout << "\n\nvoici les caractères effectivement lus :\n"; i=0; do cout << t[i]; while ( t[i++]!= '.'); Exécution: entrez une suite de caractères terminée par un point. Voyons ce que fait C++ à la lecture d une "suite de caractères". Voici les caractères effectivement lus : VoyonscequefaitC++àlalectured une"suitedecaractères". 4

Fonction getline() et gets() Ces fonctions permettent de lire des chaînes de caractères qui contiennent plusieurs mots. En C : #include <stdio.h> gets (Var_chaine); En C++ : cin.getline (Var_chaine, Nb_max, Car_special); En C, la fonction gets() prend un argument de type chaîne de caractères. La lecture se poursuit jusqu à la rencontre des caractères de fin de ligne ou de fin de fichier. Le caractère de fin de ligne est ignoré et le caractère \0 est ajouté à la fin de la chaîne. La fonction getline() prend trois arguments : Var_chaine est une variable de type chaîne de caractères. Nb_max est le nombre maximum de caractères à lire moins 1 ( Nb_max 1 ). Ce nombre correspond au nombre maximal de caractères que la chaîne peut contenir. Car_special, le troisième argument qui est facultatif, permet de spécifier un caractère dont la rencontre va interrompre la lecture. Lorsque cet argument est absent c est le caractère de fin de ligne qui sera le caractère de fin de lecture. Exemple : char chaine[81]; cin.getline( chaine, 81); char chaine[81]; cin.getline(chaine, 81, % ); Les manipulateurs Pour préciser les formats des données, des manipulateurs peuvent être insérés dans les instructions d extraction et d'insertion dans un flot. Ces manipulateurs conservent leur état jusqu au prochain changement, sauf pour setw, qui revient à 0 après chaque opération. Pour utiliser les manipulateurs, il faut inclure les fichiers <iostream.h> et <iomanip.h>. 5

Variables numériques setw (i) : i est la largeur minimale de la prochaine donnée à afficher. int var = 12; cout << setw(7) << var; cette instruction permet d inscrire 5 espaces devant la valeur 12 cout << setw(7) << -12; provoque l ajout de 4 espaces devant le nombre 12. setiosflags ( ios :: mode1 ios :: mode2 ios :: mode3 ) : précise un ou des modes d affichage L affichage d un réel peut se faire en mode point flottant, fixed (ex : 3.1415) ou en notation scientifique, scientific (ex : 3.1415E+00). On précise le mode d affichage d un réel à l aide de la fonction setiosflags(). ios :: fixed, comme argument de la fonction, précise le mode point flottant. La notation scientifique est obtenue en utilsant ios :: scientific dans l argument. On peut préciser plus d un argument en les séparant par l opérateur (ou binaire). setprecision (i) : nombre de chiffres significatifs pour float et double Exemples : Instructions Affichage cout << setiosflags (ios::fixed); cout << 3.14; 3.14 cout << setw(4) << setprecision(1) << 3.14159; 3.1 cout << setw(2) << setprecision(6) << 3.14159; 3.14159 Si on veut par exemple afficher six décimales après le point même si le nombre à afficher n en comporte pas autant dans sa partie fractionnaire, on utilise l expression ios :: showpoint. cout << setiosflags(ios::showpoint ios::fixed); cout << 3.14; 3.140000 cout << setw(3) << setprecision(1) << 3.14159; 3.1 cout << setw(2) << setprecision(6) << 3.14159; 3.141590 hex : nombres en base 16 dec : nombres en base 10 oct : nombre en base 8 6

exemple : #include <iomanip.h> int n = 12000; cout << "par défaut : " << n << "\n"; cout << "en hexadécimal : " << hex << n << "\n"; cout << "en décimal : " << dec << n << "\n"; cout << "en octal : " << oct << n << "\n"; cout << "en???? : " << n << "\n"; exécution : par défaut : 12000 en hexadécimal : 2ee0 en décimal : 12000 en octal : 27340 en???? : 27340 Variables de type chaîne de caractères cout << setw(i) << chaîne_de_caractères; Si le nombre de caractères (i) spécifié est insuffisant pour que s inscrivent tous les caractères, l opérateur << ignore ce nombre et affiche la chaîne au complet. Si le nombre i dépasse la longueur de la chaîne, la chaîne est complétée avec des blancs par la gauche. Autres manipulateurs : endl : insère une fin de ligne cout << "merci" << endl; équivalente à cout << "merci" << "\n"; setfill(c) : Fixe le caractère de remplissage (blanc par défaut) exemple : cout << setfill( * ) << setw(6) << 12; L'affichage sera : ****12 On peut écrire nous-mêmes des manipulateurs, il suffit de faire des fonctions qui prennent un flot en entrée et qui retournent un flot en sortie, les deux par référence (nous reviendrons sur ce point lors de l étude des fonctions). 7

Entrées /sorties sur fichiers En C++, l accès à des fichiers en entrée et en sortie se fait à l aide des flots de fichiers d entrée (ifstream), de sortie (ofstream), d entrée/sortie (fstream). Exemples #include <fstream.h> Déclaration de fichiers : ifstream entree; ofstream sortie; fstream entree_sortie; // fichier d entrée // fichier de sortie // fichier d entrée/sortie Ouverture des fichiers : fonction open() entree.open("donnees"); sortie.open ("resultats"); entree_sortie.open ("Fichier", ios::in ios::out); On peut tester si l ouverture a réussi à l aide de la fonction fail() if ( entree.fail() ) cout << "problème d ouverture"; if ( entree.eof() ) cout << "fin de fichier atteinte"; À l ouverture, on peut spécifier comme deuxième paramètre certains modes particuliers. Voici les modes d entrée-sortie possibles : ios::app écriture à la fin du fichier ios::in lecture au début ios::out écriture au début ios::nocreate le fichier doit exister à l ouverture ios::noreplace le fichier ne doit pas exister ios::trunc efface un fichier existant. #include <fstream.h> fstream sortie; char nom[10]; cout << "nom du fichier : "; cin >> nom; sortie.open(nom,ios::out ios::noreplace); 8

if (!sortie) cout << "le fichier existe déjà!" << endl; Noter que if (!sortie) est équivalente à if (sortie.fail()) Lecture/écriture de fichiers Les opérations d entrée se font comme du clavier à l aide de l opérateur (>>) Les opérations de sortie se font comme à l écran à l aide de l opérateur (<<) entree >> i >> x; sortie << setw(4) << x << endl; entree_sortie >> j; entree_sortie << x; // lecture // écriture // Lecture suivie d écriture Fermeture des fichiers : sortie.close(); entree.close(); Autres procédures d entrées-sorties Il existe un grand nombre de procédures d entrées/sorties. Comme pour les fonctions open() et close(), l appel se fait en préfixant le nom de la fonction appelée par le nom du flot concerné, les deux séparées par un ".". char get() : lit le prochain caractère. put (char c) : écrit le caractère c. read ((char*) &buf, int nb) : lit nb caractères et les place à l adresse buf en mémoire put(char c) : Écrit le caractère c. putback (char c) : recule d un et remplace le caractère par c. write ((char *)&buf, int nb) : écrit nb octets à partir de l adresse buf en mémoire. 9