test.c

00001 
00002 #include "UART0_stdio.h"
00003 
00004 int main() {
00005 
00006 char ent_char                                   ;
00007 int ent_dec_pos                         ;
00008 int ent_dec_neg                                 ;
00009 int ent_hex                                             ;
00010 int ent_oct                                             ;
00011 int ent_oct_hex                                 ;
00012 long ent_slong                                  ;
00013 unsigned short ent_ushort       ;
00014 unsigned long ent_ulong         ;
00015 char tab_char[3]                                ;
00016 
00017 
00018 char nom [50]                                   ;
00019 char mois[50]                                   ;
00020 int jour                                                        ;
00021 int annee                                               ;
00022 int *ptr                                                        ;
00023 char tab[3]                                             ; 
00024 long double fld                         ;
00025 float flottant                                  ;
00026 double f                                                        ;
00027 double f4                                               ;
00028 long double f1                                  ;
00029 float f2, f3                                    ;
00030 
00031 
00032   printf("Entrez un char:");
00033   scanf("%c" , &ent_char);
00034   printf("%c\n", ent_char);
00035 
00036 
00037 
00038   printf("Entrez trois caracteres:\n");
00039   scanf("%3c" , tab_char);
00040   printf("1er char  :%c\n", tab_char[0]);
00041   printf("2eme char :%c\n", tab_char[1]);
00042   printf("3eme char :%c\n", tab_char[2]);
00043   
00044   printf("Entrez un nombre decimal positif: ");
00045   scanf("%d" , &ent_dec_pos);
00046   printf("%d\n", ent_dec_pos);
00047  
00048   printf("Entrez un nombre decimal negatif: ");
00049   scanf("%d" , &ent_dec_neg);
00050   printf("%d\n", ent_dec_neg);
00051  
00052   printf("Entrez un nombre decimal long: ");
00053   scanf("%ld" , &ent_slong);
00054   printf("%ld\n", ent_slong);
00055   
00056   printf("Entrez un nombre decimal unsigned long: ");
00057   scanf("%lu" , &ent_ulong);
00058   printf("valeur entree: %lu\n", ent_ulong);
00059  
00060   printf("Entrez un nombre decimal unsigned short: ");
00061   scanf("%hu" , &ent_ushort);
00062   printf("valeur entree: %lu\n", ent_ushort);
00063  
00064  
00065   printf("Entrez un nombre en hexa: ");
00066   scanf("%x" , &ent_hex);
00067   printf("%x\n", ent_hex);
00068  
00069   printf("Entrez un nombre en octal: ");
00070   scanf("%o" , &ent_oct);
00071   printf("%o \n", ent_oct);
00072   
00073   printf("Entrez un nombre en octal ou hexa (preceder de 0 pour octal et de 0x ou 0X pour hexa), ");
00074   scanf("%i" , &ent_oct_hex);
00075   printf("valeur entree en decimal : %i \n", ent_oct_hex); 
00076   
00077   printf("Entrez une chaine de caracteres: ");
00078   scanf("%s" , nom);
00079   printf("%s \n", nom); 
00080  
00081   printf("Entrez le jour,le mois et l'annee:\n");
00082  
00083   scanf("%d%s%d", &jour, mois, &annee);
00084   printf("\njour:%d \n",jour);
00085   printf("mois:%s \n",mois);
00086   printf("annee:%d \n",annee); 
00087   
00088   
00089 
00090   // Dans le cas du format %[...] : le scanf se termine lorsqu'un caractere n'appartenant pas a 
00091   // l'ensemble est detecte, inversement si on specifie %[^...] le scanf s'arrete lorsque'un 
00092   //caractere de l'ensembles a ete lu
00093  
00094   printf("Entrez une chaine de caracteres en majuscules: ");
00095   scanf("%[A-Z]" , nom);
00096   printf("%s \n", nom); 
00097  
00098   printf("Entrez une chaine de caracteres sans majuscules pour terminer le scanf entrez une majuscule: ");
00099   scanf("%[^A-Z]" , nom);
00100   printf("%s \n", nom); 
00101   
00102   printf("Entrez une adresse memoire quelconque \n");
00103   scanf("%p",&ptr);
00104   printf("L'adresse %p contient la valeur %d ",ptr,*ptr);
00105   
00106 /* printf("Entrez un caractere: ");
00107   scanf("%c" , &ent_char);
00108   __io_ungetc(ent_char);
00109   scanf("%c" , &ent_char);
00110   printf("Apres un scanf suivi d'un ungetc et d'un scanf on a : %c \n", ent_char); 
00111 
00112   printf("Entrez une chaine de 2 caracteres\n ");
00113   scanf("%s" , nom);  
00114   printf("la chaine entree est %s \n",nom);
00115   ent_char = __io_ungetc(nom[0]); 
00116   scanf("%c" , nom[0]) ;
00117   printf("Apres un ungetc et d'un scanf on a : %s \n", nom); 
00118   */
00119 
00120  printf("Entrer un float:\n");
00121   scanf("%f",&flottant);
00122   printf("Le float entre est %f",flottant);
00123  
00124   printf("Entrer un double float:\n");
00125   scanf("%Lf",&f);
00126   printf("Le float entre est %Lf\n",f);
00127 
00128 
00129   printf("Entrer un nombre avec exposant :\n");  
00130   scanf("%le",&f);
00131   printf("Le float entre est %le\n",f);
00132   
00133  // Note : le format %g choisit en fonction de la valeur entree le format le plus
00134  // appropriée entre %e et %f 
00135   
00136   
00137   printf("Entrer un nombre avec exposant :\n");  
00138   scanf("%lg",&f);
00139   printf("Le float entre est %lg\n",f);
00140   
00141   printf("Entrer un nombre avec exposant :\n");  
00142   scanf("%Lg",&fld);
00143   printf("Le float entre est %Lg\n",fld);
00144 
00145 
00146 f1 = 48656568.256479123456789123456789;
00147 f = 48656568.256479123456789123456789;
00148 f2 = 456.45366;
00149 f3 = 456.45362;
00150 printf("Test for Floating points numbers printf\n");
00151 
00152 /*Simple test of %f format */
00153         printf("double :%lf\n",f);
00154 
00155 /* Test with format specifying first number is equal to minimal number
00156    of caracter to be print the second one is number of digits */
00157    
00158 printf("LONG DOUBLE  :%Lf - %20.10Lf - %20.15Lf - %20.20Lf - %30.30Lf\n", f1,  f1, f1, f1, f1);
00159 printf("float2    :%4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
00160 
00161 /*Note: the output should be float2: 3.14 +3e+000 3.141600E+000*/
00162 
00163    printf("float3    :%7.3f\n", 1.2345);
00164         printf("float3bis :%7.3lf\n",4865.256479 );
00165         printf("float4    :%10.3f\n", 1.2345e3);
00166         printf("float5    :%10.3f\n", 1.2345e7);
00167         printf("float6    :%12.4e\n", 1.2345);
00168         printf("float7    :%12.4e\n", 123.456789e8);
00169         printf("float8    :%15.5lf\n",48656568.256479 );
00170         printf("float9    :%15.6lf\n",48656568.256479 - 48656568.256478 );
00171         printf("float9bis :%-15.6lf%7.4f\n",48656568.256479 - 48656568.256478,1.2345 ); 
00172         printf("float9ter :%15.2lf\n",f2*f3 );
00173 
00174 /*Note : the outputs shoud be
00175 for 1.2345, ^^1.235
00176 for 1.2345e5, ^^1234.500
00177 for 1.2345e7, 12345000.000
00178 for 1.2345, ^^1.2345e+00
00179 for 123.456789e8, ^^1.2346e+10
00180 
00181 for float 9: 48656568.256479 - 48656568.2563,^^^^^^^^0.00001
00182 for float 9bis: 48656568.256479 - 48656568.2563,0.00001^^^^^^^^1.2345
00183 for f2*f3 ,^^^^^^208349,92
00184 ^ is equal to a space */
00185 
00186 
00187         printf("float10   :01234567 \n" );
00188         printf("float11   :%8g|\n", 12.34 );
00189         printf("float12   :%8g|\n", 1234.5678 );
00190         printf("float13   :%8g|\n", 0.0478 );
00191         printf("float14   :%8g|\n", 422121.0 );
00192         printf("float15   :%8g|\n", 422121234.345345 );
00193         
00194 /*Note : outputs should be
00195 01234567
00196    12.34|
00197  1234.57|
00198   0.0478|
00199   422121|
00200 4.22121e+08|
00201 */
00202 
00203 
00204 printf("float16   :%.0f|\n",  1000.123456789123456789 );
00205 printf("float17   :%.1f|\n",  2000.123456789123456789 );
00206 printf("float18   :%.2f|\n",  3000.123456789123456789 );
00207 printf("float19   :%.10f|\n", 4000.123456789123456789 );
00208 printf("float20   :%.30f|\n", 5000.123456789123456789 );
00209 printf("float21   :%f|\n",    6000.123456789123456789 );
00210 printf("float22   :%.f|\n",   7000.123456789123456789 ); 
00211 
00212 /*Note : outputs should be
00213 1000|
00214 2000.1|
00215 3000.12|
00216 4000.1234567891|
00217 5000.12345678912333823973312939761|
00218 6000.123457|
00219 7000|
00220 */
00221   
00222 int    a                                ;
00223 char   c                                ;
00224 float  ft                               ;
00225 int    hex                              ;
00226 double db                               ;
00227 char   stg[50]="chaine" ;
00228 
00229 a=1;
00230 // Test du printf avec une suite de parametres int
00231 printf("Test suite de int: \n a=%d\na+1=%d\na+2=%d\na+3=%d\na+4=%d\na+5=%d\na+6=%d\na+7=%d\na+8=%d\na=%d\n",a,a+1,a+2,a+3,a+4,a+5,a+6,a+7,a+8,a);
00232 
00233 //Test du printf avec une suite de floats
00234  ft=1.589634 ;
00235  printf("Test suite de floats: \nft=%f\nft+0.1=%f\nft+0.01=%f\nft+0.001=%f\nft+0.0001=%f\nft+0.00001=%f\n",ft,ft+0.1,ft+0.01,ft+0.001,ft+0.0001,ft+0.00001);
00236   
00237 // Test du printf avec un melange de formats  
00238 
00239 a   = 1        ;
00240 c   ='c'       ;
00241 ft  = 1.963214 ;
00242 db  = 1.589e+15;
00243 hex = 0x0FA    ;
00244 
00245         printf("Test avec plusieurs formats:\na=%d\nc=%c\nstg=%s\nft=%6.5f\ndb=%10.2e\nhex=%x\n",a,c,stg,ft,db,hex); 
00246         printf("Entrez dans l'ordre un int\n un char\n une chaine\nun float\nun float avec exposant\nun hexa \n");
00247         scanf("%d%c%s%f%le%x",&a,&c,stg,&ft,&db,&hex);
00248         printf("Test avec plusieurs formats apres un scanf:\n a=%d\nc=%c\nstg=%s\nft=%6.5f\ndb=%10.2le\nhex=0x%x\n",a,c,stg,ft,db,hex);
00249         
00250    return 0;
00251 
00252  }
00253 
00254 

Generated on Mon Apr 11 14:23:40 2011 for Contiki 2.5 by  doxygen 1.6.1