home *** CD-ROM | disk | FTP | other *** search
- /*********************************************************************
- * CH14_01.C Allocation de mΘmoire avec malloc() *
- * pour une chaεne de caractΦres *
- *********************************************************************/
-
- #include<stdio.h>
- #include<string.h> /* pour strncpy() */
- #include<alloc.h> /* pour malloc() et free() */
- #include<process.h> /* pour exit() */
-
- void LitU( unsigned*);
- void LitChaine( char*, unsigned);
-
- main( void)
- {
- char *chaine;
- unsigned dim;
-
- printf(" Entrez la dimension de la chaεne de caractΦres: ");
- LitU( &dim);
-
- chaine= ( char*) malloc( dim* sizeof( char));
- if( chaine== NULL)
- {
- printf("\n La mΘmoire disponible est insuffisante!\n");
- exit( 1);
- }
- printf(" Entrez la chaεne: ");
- LitChaine( chaine, dim);
- printf("\n chaεne: %s", chaine);
-
- free( chaine);
- }
-
- void LitChaine( char *chaine0, unsigned dim_chaine0)
- {
- char *chaine1;
- if( ( chaine1= ( char*) malloc( 2* 256) )== NULL)
- {
- printf("\n La mΘmoire disponible est insuffisante!\n");
- exit( 1);
- }
- *(chaine0+ dim_chaine0- 1)='\0';
-
- while( scanf("%255[^\n]", chaine1)!= 1)
- while( getchar() != '\n');
- while( getchar() != '\n');
- strncpy( chaine0, chaine1, dim_chaine0- 1);
- free( chaine1);
- }
-
- void LitU( unsigned* entier_u)
- {
- double dble;
- do
- {
- while( scanf("%lf", &dble)!= 1)
- while( getchar() != '\n');
- while( getchar() != '\n');
- }
- while( dble< 0.0 || dble> 65535.0);
- *entier_u= ( unsigned) dble;
- }
- /*
- Entrez la dimension de la chaεne de caractΦres: 16
- Entrez la chaεne: Petrus Albulus!!!
- Affichage de la chaεne: Petrus Albulus! */