1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
/*
* File: source.c
* Version: 0.0.1 GPL V3.
* Created by SAMBIA39 on 19/02/2016 - 9:34:46.
* Copyright (c) 2016 SAMBIA39 and DEVELOPPEZ.NET
*/
#include <stdio.h>
#include <stdlib.h>
//type booléen
typedef enum e_bool{
false,
true
}bool;
/*
* Fonction qui joue similaire à perror
*/
void f_fatal_err( char *p_msg ){
extern int errno;
extern const int sys_nerr;
extern const char *const sys_errlist[];
fprintf( stderr, "Erreur N°(%d)\t\t:%s\n", errno, p_msg );
if( 0 < errno && sys_nerr > errno )
fprintf( stderr, "Description erreur\t:%s\n", sys_errlist[errno] );
else
fprintf( stderr, "Description erreur\t:Erreur inconnue\n" );
exit( EXIT_FAILURE );
}
/*
* Fonction qui se charge de prendre la saisie
* et vider le buffer elle renvoie vrais si
* la saisie a été correcte faut en cas d'erreur
*/
bool f_get_choix( char *ptr, size_t buff ){
char *p_str = NULL;
register int c_str;
extern char *strchr();
buff = ( 0 >= buff ) ? BUFSIZ : buff;
fgets( ptr, buff, stdin );
if( NULL != (p_str = strchr( ptr, '\n' ) ) )
*p_str = '\0';
else{
do{
c_str = getchar();
}while( '\n' != c_str && EOF != c_str );
return false;
}
return true;
}
/*
* Fonction principale
*/
int main( void ){
int choix;
char ptr[BUFSIZ];
short i_bool = 1;
extern int errno;
while ( i_bool )
{
printf("\nEntrez votre choix\n");
if( false == f_get_choix( ptr, BUFSIZ ) )
f_fatal_err( "Saisie incorrecte" );
sscanf(ptr, "%d", &choix);
switch (choix)
{
case 1:
printf("\nCas 1\n\n");
break;
case 2:
printf("\nCas2\n\n");
break;
case 3:
i_bool = 0;
break;
default:
fprintf( stdout, "Commande invalide\n" );
break;
}
}
fprintf( stdout, "Fin du programme\n" );
return EXIT_SUCCESS;
} |
Partager