home *** CD-ROM | disk | FTP | other *** search
- /*********************************************************************
- * CH14_02.C Allocation de mΘmoire dans le tas lointain pour une *
- * chaεne de caractΦres en utilisant farmalloc() *
- * Ce programme fonctionne en C++ mais pas en C ANSI *
- *********************************************************************/
-
- #include<stdio.h>
- #include<string.h> /* pour _fstrncpy() */
- #include<alloc.h> /* pour farmalloc() et farfree() */
- #include<process.h> /* pour exit() */
-
- void LitU( unsigned*);
- void LitChaine( char far*, unsigned);
-
- void main( void)
- {
- char far *chaine;
- unsigned dim;
-
- printf(" Entrez la dimension de la chaεne de caractΦres: ");
- LitU( &dim);
-
- chaine= ( char far*) farmalloc( 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: %Fs", chaine);
-
- farfree( chaine);
- }
-
- void LitChaine( char far*chaine0, unsigned dim_chaine0)
- {
- char far *chaine1;
- if( ( chaine1= ( char far*) farmalloc( 2* 256) )== NULL)
- {
- printf("\n La mΘmoire disponible est insuffisante!\n");
- exit( 1);
- }
- *(chaine0+ dim_chaine0- 1)='\0';
-
- while( scanf("%F255[^\n]", chaine1)!= 1)
- while( getchar() != '\n');
- while( getchar() != '\n');
- _fstrncpy( chaine0, chaine1, dim_chaine0- 1);
- farfree( 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;
- }
-