RSA
Référence du fichier chaines.c

Contient des fonctions permettant de manipuler les chaines de caractères et les saisies sécurisées. Plus de détails...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "pointeurs.h"
#include "chaines.h"

Fonctions

char * saisieBrute ()
 Permet de saisir une chaine de caractère sans dépassement de mémoire et sans savoir à l'avance la taille de la saisie. Plus de détails...
 
void clearBuffer ()
 Permet d'effacer le buffer de l'entrée standard. Plus de détails...
 
int saisieInt (const char chaine[])
 Permet d'afficher une chaine et récupérer la saisie de l'utilisateur sous la forme d'un entier. Plus de détails...
 
GRDNB saisieGRDNB (const char chaine[])
 Permet d'afficher une chaine et récupérer la saisie de l'utilisateur sous la forme d'un GRDNB. Plus de détails...
 

Description détaillée

Contient des fonctions permettant de manipuler les chaines de caractères et les saisies sécurisées.

Auteur
I. Laruelle / A. Masciulli - UTT NF05 A18

Documentation des fonctions

◆ clearBuffer()

void clearBuffer ( )

Permet d'effacer le buffer de l'entrée standard.

Obsolète:
La fonction char* saisieBrute() nettoie toujours le buffer.
Avertissement
Cette fonction doit être utilisée quand vous savez qu'il y a des caractères à nettoyer.
Sinon elle va attendre que l'utilisateur saisisse quelque chose.

On lit un caractère tant que que le caractère lu est différent du retour à la ligne ou de EOF.

◆ saisieBrute()

char * saisieBrute ( )

Permet de saisir une chaine de caractère sans dépassement de mémoire et sans savoir à l'avance la taille de la saisie.

Renvoie
Une chaine de caractère qui contient la saisie de l'utilisateur.

On ouvre un fichier temporaire avec tmpfile()

  • Avec getchar(), on lit le caractère saisi.
  • On le stocke dans le fichier temporaire.
  • On incrémente notre compteur de caractère.
  • On continue tant que le prochain caractère lu est différent du retour à la ligne.

On crée la chaine dynamiquement avec la taille trouvée précédemment.
On lit toute la ligne du fichier temporaire dans la chaine créée.
On renvoie la chaine.

◆ saisieGRDNB()

GRDNB saisieGRDNB ( const char  chaine[])

Permet d'afficher une chaine et récupérer la saisie de l'utilisateur sous la forme d'un GRDNB.

Paramètres
[in]chaineChaine contenant la question posée à l'utilisateur.
Renvoie
Un GRDNB saisi par l'utilisateur.

On affiche la chaine, on récupére la saisie brute de l'utilisateur sous forme de chaine.
On regarde la première case pour voir éventuellement le signe du nombre.
On parcourt chaque case de la chaine pour s'assurer que ce ne sont que des chiffres.
Tant qu'il y a des caractères différents de chiffres, on recommence.

Quand on est sûr que l'utilisateur n'a saisi que des chiffres, on convertit avec str2grdnb() et on renvoie le résultat.

◆ saisieInt()

int saisieInt ( const char  chaine[])

Permet d'afficher une chaine et récupérer la saisie de l'utilisateur sous la forme d'un entier.

Paramètres
[in]chaineChaine contenant la question posée à l'utilisateur.
Renvoie
Un entier saisi par l'utilisateur.

On affiche la chaine, on récupére la saisie brute de l'utilisateur sous forme de chaine.
La fonction strtol nous permet de convertir la chaine en entier.
Cette fonction nous donne également le restant de la chaine si éventuellement des choses autre que des chiffres sont présentes.
Tant que la taille de cette chaine n'est pas nulle, on recommence la saisie.

Quand on est sûr que l'utilisateur n'a saisi que des chiffres, on convertit et on renvoie le résultat.