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 97 98 99
|
/*
* File: source.c
* Version: 0.0.1 GPL V3.
* Created by SAMBIA39 on 06/03/2016 - 16:05:46.
* Copyright (c) 2016 SAMBIA39 and DEVELOPPEZ.NET
*/
#define MAXSIZ 10
#include <errno.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
/*
* Fonction vide buffer
*/
void f_flush_stdin( void ){
register int r;
while( (r = fgetc(stdin)) != EOF && r != '\n' );
}
/*
* Fonction qui permet de saisir
* des valeurs numériques
*/
int f_stdin_num( void ){
int ret = 0;
char buff[BUFSIZ];
do{
fprintf( stdout, "Entrer un nombnre\t:" );
fgets( buff, BUFSIZ, stdin );
}while( (1 != sscanf(buff, "%d", &ret)) && !isdigit(ret) );
return ret;
}
/*
* Fonction d'allocation et de saisie de tableaux dynamiques
* d'entier qui prend comme argument un entier positif.
* Si la taille est inférieur ou égale à zéro le tableau
* prendra par défaut une taille de 10.
*/
int *f_get_tab_num( unsigned int size_tab ){
errno = 0;
int *ptr = NULL;
unsigned int i = 0;
size_tab = ( 0 >= size_tab ) ? MAXSIZ : size_tab;
if( NULL == ptr ){
if( NULL == ( ptr = calloc( size_tab, sizeof(int) ) ) ){
fprintf( stderr, "(%d)\t:%s\n\t:%s\n", errno,
"Erreur allocation mémoire", strerror(errno) );
exit( EXIT_FAILURE );
}
}
for( i = 0; i < size_tab; i++ )
*(ptr+i) = f_stdin_num();
return ptr;
}
/*
* Fonction principale
*/
int main( void ){
/*
* Variable local
*/
int i = 0;
int *ptr = NULL;
/*
* Acquisition et remplissage par saisie
* d'un tableau dynamique d'entier de taille "n"
*/
ptr = f_get_tab_num( 0 );
/*
* Affichage du résultat
*/
for( i = 0; i < 10; i++ )
fprintf( stdout, "(saisie %d) = %d\n",i, ptr[i] );
/*
* Free ptr
*/
free( ptr );
ptr = NULL;
return EXIT_SUCCESS;
} |
Partager