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.

  1. Finir le TP n°2
  2. Compléter votre répertoire téléphonique (repTel.c

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.

  1. Commencer à réfléchir à la réalisation du Master Mind® (masterMind.c)

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.

  1. Décrivez la représentation de vos données.
  2. Décomposez le problème en sous-problèmes (i.e. en fonctions).
  3. Programmez vos fonctions.

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.