Contiki 2.6
|
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