TP de Programmation en C
n°3
Switch et les Fonctions,
http://www-sop.inria.fr/oasis/personnel/Carine.Courbis/c/
IUT GTR Sophia Antipolis
Nov 2000
Recommandations importantes :
Utilisez les conventions vues en cours (MA_CONSTANTE, maVariable, MonType…), indentez et commentez vos programmes.
Exemple de menu :
Tapez : s pour sortir du programme
1 pour afficher le répertoire
2 pour rechercher un numéro de téléphone
3 pour ajouter une personne au répertoire
4 pour ajouter une personne sans numéro de téléphone au répertoire
5 pour enlever une personne du répertoire
6 pour changer le numéro de téléphone
Pour 2, 5 et 6, l’utilisateur devra saisir le nom et le prénom de la personne. Pour cela, on réutilisera la fonction
saisiePersonne() en la modifiant légèrement pour permettre la saisie du nom, prénom et numéro de téléphone, ou seulement la saisie du nom et du prénom.Réaliser le jeu du Master Mind® i.e. l'ordinateur choisit aléatoirement 4 pions de couleur que l’utilisateur a à découvrir en moins de 10 tentatives. A chaque tentative, l'utilisateur choisit 4 pions de couleur et l’ordinateur indique combien de pions sont de bonne couleur et à la " bonne " place (pion noir) ou de pions de " bonne " couleur mais mal placés (pion blanc) mais il ne précise pas lesquels.
A rendre
par mail à votre enseignant de TP, minimum 24 heures avant votre prochaine séance, le code de votre répertoire téléphonique et les réponses aux questions 1 et 2 du Master Mind.Annexe : Les fonctions d’entrée/sortie <stdio.h>
Ouverture d’un fichier
FILE * fopen(char * nomFichier,, char * mode) ;
Mode sera égal à "r" (pour read) pour l'ouvrir en lecture ou "w" (pour write) pour l'ouvrir en écriture (si le fichier existe déjà, il sera écrasé).
Retourne : NULL (constante définie dans <stddef.h>) s'il y a eu une erreur (eg le fichier n'existe pas, pas les droits de lecture, …)
Le descripteur du fichier (numéro identifiant uniquement le fichier ouvert).
_________________________________
Fermeture d'un fichier
int fclose(FILE * descripteurFichierAFermer) ;
A la fin du traitement d'E/S, il faudra fermer le fichier.
Retourne 0 si le fichier a été fermé, EOF s'il y a eu une erreur.
_________________________________
Lecture et Ecriture caractère par caractère
Lecture
int fgetc(FILE * descripteurFichierALire);
Retourne le caractère lu ou EOF si on est à la fin du fichier ou s'il y a une erreur.
Ecriture
int fputc(int caractereAEcrire, FILE * descripteurFichierAEcrire);
Retourne le caractère écrit ou EOF s'il y a eu une erreur.
_________________________________
Lecture et Ecriture par lignes
Lecture
char * fgets(char * ouMettreLesCaracLus, int nbCaracALire, FILE * descripteurFichierALire);
Lit les caractères jusqu'à line-feed (mis dans le tableau), fin de fichier ou jusqu'à ce qu'il ne reste plus qu'un caractère libre dans le tableau.
fgets rajoute le caractère NULL à la fin des caractères lus.Retourne le pointeur sur
ouMettreLesCaracLus, ou NULL si on est à la fin du fichier ou s'il y a une erreur.Ecriture
int fputs(char * chaineAEcrire, FILE * descripteurFichierAEcrire);
Retourne EOF s'il y a eu une erreur ou une valeur non nulle.
_________________________________
E/S Formatées.
Lecture
Int fprintf(FILE * descripteurFichierAEcrire, char * format, …);
Se manipule comme
printf car fprintf(stdout, format, …) Û printf(format, …)Retourne le nombre de caractères écrits ou une valeur négative en cas d'erreur.
Ecriture
int fscanf(FILE * decripteurFichierALire, const char * format, …);
Se manipule comme
scanf car fscanf(stdin, format, …) Û scanf(format, )Retourne le nombre d'objets convertis et affectés ou EOF si la fin de fichier est atteinte ou s'il y a eu une erreur.