Contiki 2.5
test.c
1 
2 #include "UART0_stdio.h"
3 
4 int main() {
5 
6 char ent_char ;
7 int ent_dec_pos ;
8 int ent_dec_neg ;
9 int ent_hex ;
10 int ent_oct ;
11 int ent_oct_hex ;
12 long ent_slong ;
13 unsigned short ent_ushort ;
14 unsigned long ent_ulong ;
15 char tab_char[3] ;
16 
17 
18 char nom [50] ;
19 char mois[50] ;
20 int jour ;
21 int annee ;
22 int *ptr ;
23 char tab[3] ;
24 long double fld ;
25 float flottant ;
26 double f ;
27 double f4 ;
28 long double f1 ;
29 float f2, f3 ;
30 
31 
32  printf("Entrez un char:");
33  scanf("%c" , &ent_char);
34  printf("%c\n", ent_char);
35 
36 
37 
38  printf("Entrez trois caracteres:\n");
39  scanf("%3c" , tab_char);
40  printf("1er char :%c\n", tab_char[0]);
41  printf("2eme char :%c\n", tab_char[1]);
42  printf("3eme char :%c\n", tab_char[2]);
43 
44  printf("Entrez un nombre decimal positif: ");
45  scanf("%d" , &ent_dec_pos);
46  printf("%d\n", ent_dec_pos);
47 
48  printf("Entrez un nombre decimal negatif: ");
49  scanf("%d" , &ent_dec_neg);
50  printf("%d\n", ent_dec_neg);
51 
52  printf("Entrez un nombre decimal long: ");
53  scanf("%ld" , &ent_slong);
54  printf("%ld\n", ent_slong);
55 
56  printf("Entrez un nombre decimal unsigned long: ");
57  scanf("%lu" , &ent_ulong);
58  printf("valeur entree: %lu\n", ent_ulong);
59 
60  printf("Entrez un nombre decimal unsigned short: ");
61  scanf("%hu" , &ent_ushort);
62  printf("valeur entree: %lu\n", ent_ushort);
63 
64 
65  printf("Entrez un nombre en hexa: ");
66  scanf("%x" , &ent_hex);
67  printf("%x\n", ent_hex);
68 
69  printf("Entrez un nombre en octal: ");
70  scanf("%o" , &ent_oct);
71  printf("%o \n", ent_oct);
72 
73  printf("Entrez un nombre en octal ou hexa (preceder de 0 pour octal et de 0x ou 0X pour hexa), ");
74  scanf("%i" , &ent_oct_hex);
75  printf("valeur entree en decimal : %i \n", ent_oct_hex);
76 
77  printf("Entrez une chaine de caracteres: ");
78  scanf("%s" , nom);
79  printf("%s \n", nom);
80 
81  printf("Entrez le jour,le mois et l'annee:\n");
82 
83  scanf("%d%s%d", &jour, mois, &annee);
84  printf("\njour:%d \n",jour);
85  printf("mois:%s \n",mois);
86  printf("annee:%d \n",annee);
87 
88 
89 
90  // Dans le cas du format %[...] : le scanf se termine lorsqu'un caractere n'appartenant pas a
91  // l'ensemble est detecte, inversement si on specifie %[^...] le scanf s'arrete lorsque'un
92  //caractere de l'ensembles a ete lu
93 
94  printf("Entrez une chaine de caracteres en majuscules: ");
95  scanf("%[A-Z]" , nom);
96  printf("%s \n", nom);
97 
98  printf("Entrez une chaine de caracteres sans majuscules pour terminer le scanf entrez une majuscule: ");
99  scanf("%[^A-Z]" , nom);
100  printf("%s \n", nom);
101 
102  printf("Entrez une adresse memoire quelconque \n");
103  scanf("%p",&ptr);
104  printf("L'adresse %p contient la valeur %d ",ptr,*ptr);
105 
106 /* printf("Entrez un caractere: ");
107  scanf("%c" , &ent_char);
108  __io_ungetc(ent_char);
109  scanf("%c" , &ent_char);
110  printf("Apres un scanf suivi d'un ungetc et d'un scanf on a : %c \n", ent_char);
111 
112  printf("Entrez une chaine de 2 caracteres\n ");
113  scanf("%s" , nom);
114  printf("la chaine entree est %s \n",nom);
115  ent_char = __io_ungetc(nom[0]);
116  scanf("%c" , nom[0]) ;
117  printf("Apres un ungetc et d'un scanf on a : %s \n", nom);
118  */
119 
120  printf("Entrer un float:\n");
121  scanf("%f",&flottant);
122  printf("Le float entre est %f",flottant);
123 
124  printf("Entrer un double float:\n");
125  scanf("%Lf",&f);
126  printf("Le float entre est %Lf\n",f);
127 
128 
129  printf("Entrer un nombre avec exposant :\n");
130  scanf("%le",&f);
131  printf("Le float entre est %le\n",f);
132 
133  // Note : le format %g choisit en fonction de la valeur entree le format le plus
134  // appropriée entre %e et %f
135 
136 
137  printf("Entrer un nombre avec exposant :\n");
138  scanf("%lg",&f);
139  printf("Le float entre est %lg\n",f);
140 
141  printf("Entrer un nombre avec exposant :\n");
142  scanf("%Lg",&fld);
143  printf("Le float entre est %Lg\n",fld);
144 
145 
146 f1 = 48656568.256479123456789123456789;
147 f = 48656568.256479123456789123456789;
148 f2 = 456.45366;
149 f3 = 456.45362;
150 printf("Test for Floating points numbers printf\n");
151 
152 /*Simple test of %f format */
153  printf("double :%lf\n",f);
154 
155 /* Test with format specifying first number is equal to minimal number
156  of caracter to be print the second one is number of digits */
157 
158 printf("LONG DOUBLE :%Lf - %20.10Lf - %20.15Lf - %20.20Lf - %30.30Lf\n", f1, f1, f1, f1, f1);
159 printf("float2 :%4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
160 
161 /*Note: the output should be float2: 3.14 +3e+000 3.141600E+000*/
162 
163  printf("float3 :%7.3f\n", 1.2345);
164  printf("float3bis :%7.3lf\n",4865.256479 );
165  printf("float4 :%10.3f\n", 1.2345e3);
166  printf("float5 :%10.3f\n", 1.2345e7);
167  printf("float6 :%12.4e\n", 1.2345);
168  printf("float7 :%12.4e\n", 123.456789e8);
169  printf("float8 :%15.5lf\n",48656568.256479 );
170  printf("float9 :%15.6lf\n",48656568.256479 - 48656568.256478 );
171  printf("float9bis :%-15.6lf%7.4f\n",48656568.256479 - 48656568.256478,1.2345 );
172  printf("float9ter :%15.2lf\n",f2*f3 );
173 
174 /*Note : the outputs shoud be
175 for 1.2345, ^^1.235
176 for 1.2345e5, ^^1234.500
177 for 1.2345e7, 12345000.000
178 for 1.2345, ^^1.2345e+00
179 for 123.456789e8, ^^1.2346e+10
180 
181 for float 9: 48656568.256479 - 48656568.2563,^^^^^^^^0.00001
182 for float 9bis: 48656568.256479 - 48656568.2563,0.00001^^^^^^^^1.2345
183 for f2*f3 ,^^^^^^208349,92
184 ^ is equal to a space */
185 
186 
187  printf("float10 :01234567 \n" );
188  printf("float11 :%8g|\n", 12.34 );
189  printf("float12 :%8g|\n", 1234.5678 );
190  printf("float13 :%8g|\n", 0.0478 );
191  printf("float14 :%8g|\n", 422121.0 );
192  printf("float15 :%8g|\n", 422121234.345345 );
193 
194 /*Note : outputs should be
195 01234567
196  12.34|
197  1234.57|
198  0.0478|
199  422121|
200 4.22121e+08|
201 */
202 
203 
204 printf("float16 :%.0f|\n", 1000.123456789123456789 );
205 printf("float17 :%.1f|\n", 2000.123456789123456789 );
206 printf("float18 :%.2f|\n", 3000.123456789123456789 );
207 printf("float19 :%.10f|\n", 4000.123456789123456789 );
208 printf("float20 :%.30f|\n", 5000.123456789123456789 );
209 printf("float21 :%f|\n", 6000.123456789123456789 );
210 printf("float22 :%.f|\n", 7000.123456789123456789 );
211 
212 /*Note : outputs should be
213 1000|
214 2000.1|
215 3000.12|
216 4000.1234567891|
217 5000.12345678912333823973312939761|
218 6000.123457|
219 7000|
220 */
221 
222 int a ;
223 char c ;
224 float ft ;
225 int hex ;
226 double db ;
227 char stg[50]="chaine" ;
228 
229 a=1;
230 // Test du printf avec une suite de parametres int
231 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);
232 
233 //Test du printf avec une suite de floats
234  ft=1.589634 ;
235  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);
236 
237 // Test du printf avec un melange de formats
238 
239 a = 1 ;
240 c ='c' ;
241 ft = 1.963214 ;
242 db = 1.589e+15;
243 hex = 0x0FA ;
244 
245  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);
246  printf("Entrez dans l'ordre un int\n un char\n une chaine\nun float\nun float avec exposant\nun hexa \n");
247  scanf("%d%c%s%f%le%x",&a,&c,stg,&ft,&db,&hex);
248  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);
249 
250  return 0;
251 
252  }
253 
254