1--TEST--
2Test fscanf() function: usage variations - string formats with float values
3--FILE--
4<?php
5
6/* Test fscanf() to scan float values using different string format types */
7
8$file_path = __DIR__;
9
10echo "*** Test fscanf(): different string format types with float values ***\n";
11
12// create a file
13$filename = "$file_path/fscanf_variation15.tmp";
14$file_handle = fopen($filename, "w");
15if($file_handle == false)
16  exit("Error:failed to open file $filename");
17
18// array of float type values
19
20$float_values = array (
21  -2147483649,
22  2147483648,
23  -0x80000001, // float value, beyond max negative int
24  0x800000001, // float value, beyond max positive int
25  020000000001, // float value, beyond max positive int
26  -020000000001, // float value, beyond max negative int
27  0.0,
28  -0.1,
29  1.0,
30  1e5,
31  -1e6,
32  1E8,
33  -1E9,
34  10.0000000000000000005,
35  10.5e+5
36);
37
38$string_formats = array( "%s",
39                         "%hs", "%ls", "%Ls",
40                         " %s", "%s ", "% s",
41                         "\t%s", "\n%s", "%4s",
42                         "%30s", "%[a-zA-Z0-9]", "%*s");
43
44$counter = 1;
45
46// writing to the file
47foreach($float_values as $value) {
48  @fprintf($file_handle, $value);
49  @fprintf($file_handle, "\n");
50}
51// closing the file
52fclose($file_handle);
53
54// opening the file for reading
55$file_handle = fopen($filename, "r");
56if($file_handle == false) {
57  exit("Error:failed to open file $filename");
58}
59
60$counter = 1;
61// reading the values from file using different string formats
62foreach($string_formats as $string_format) {
63  // rewind the file so that for every foreach iteration the file pointer starts from bof
64  rewind($file_handle);
65  echo "\n-- iteration $counter --\n";
66  while( !feof($file_handle) ) {
67    try {
68      var_dump(fscanf($file_handle,$string_format));
69    } catch (ValueError $exception) {
70      echo $exception->getMessage() . "\n";
71    }
72  }
73  $counter++;
74}
75
76echo "\n*** Done ***";
77?>
78--CLEAN--
79<?php
80$file_path = __DIR__;
81$filename = "$file_path/fscanf_variation15.tmp";
82unlink($filename);
83?>
84--EXPECT--
85*** Test fscanf(): different string format types with float values ***
86
87-- iteration 1 --
88array(1) {
89  [0]=>
90  string(11) "-2147483649"
91}
92array(1) {
93  [0]=>
94  string(10) "2147483648"
95}
96array(1) {
97  [0]=>
98  string(11) "-2147483649"
99}
100array(1) {
101  [0]=>
102  string(11) "34359738369"
103}
104array(1) {
105  [0]=>
106  string(10) "2147483649"
107}
108array(1) {
109  [0]=>
110  string(11) "-2147483649"
111}
112array(1) {
113  [0]=>
114  string(1) "0"
115}
116array(1) {
117  [0]=>
118  string(4) "-0.1"
119}
120array(1) {
121  [0]=>
122  string(1) "1"
123}
124array(1) {
125  [0]=>
126  string(6) "100000"
127}
128array(1) {
129  [0]=>
130  string(8) "-1000000"
131}
132array(1) {
133  [0]=>
134  string(9) "100000000"
135}
136array(1) {
137  [0]=>
138  string(11) "-1000000000"
139}
140array(1) {
141  [0]=>
142  string(2) "10"
143}
144array(1) {
145  [0]=>
146  string(7) "1050000"
147}
148bool(false)
149
150-- iteration 2 --
151array(1) {
152  [0]=>
153  string(11) "-2147483649"
154}
155array(1) {
156  [0]=>
157  string(10) "2147483648"
158}
159array(1) {
160  [0]=>
161  string(11) "-2147483649"
162}
163array(1) {
164  [0]=>
165  string(11) "34359738369"
166}
167array(1) {
168  [0]=>
169  string(10) "2147483649"
170}
171array(1) {
172  [0]=>
173  string(11) "-2147483649"
174}
175array(1) {
176  [0]=>
177  string(1) "0"
178}
179array(1) {
180  [0]=>
181  string(4) "-0.1"
182}
183array(1) {
184  [0]=>
185  string(1) "1"
186}
187array(1) {
188  [0]=>
189  string(6) "100000"
190}
191array(1) {
192  [0]=>
193  string(8) "-1000000"
194}
195array(1) {
196  [0]=>
197  string(9) "100000000"
198}
199array(1) {
200  [0]=>
201  string(11) "-1000000000"
202}
203array(1) {
204  [0]=>
205  string(2) "10"
206}
207array(1) {
208  [0]=>
209  string(7) "1050000"
210}
211bool(false)
212
213-- iteration 3 --
214array(1) {
215  [0]=>
216  string(11) "-2147483649"
217}
218array(1) {
219  [0]=>
220  string(10) "2147483648"
221}
222array(1) {
223  [0]=>
224  string(11) "-2147483649"
225}
226array(1) {
227  [0]=>
228  string(11) "34359738369"
229}
230array(1) {
231  [0]=>
232  string(10) "2147483649"
233}
234array(1) {
235  [0]=>
236  string(11) "-2147483649"
237}
238array(1) {
239  [0]=>
240  string(1) "0"
241}
242array(1) {
243  [0]=>
244  string(4) "-0.1"
245}
246array(1) {
247  [0]=>
248  string(1) "1"
249}
250array(1) {
251  [0]=>
252  string(6) "100000"
253}
254array(1) {
255  [0]=>
256  string(8) "-1000000"
257}
258array(1) {
259  [0]=>
260  string(9) "100000000"
261}
262array(1) {
263  [0]=>
264  string(11) "-1000000000"
265}
266array(1) {
267  [0]=>
268  string(2) "10"
269}
270array(1) {
271  [0]=>
272  string(7) "1050000"
273}
274bool(false)
275
276-- iteration 4 --
277array(1) {
278  [0]=>
279  string(11) "-2147483649"
280}
281array(1) {
282  [0]=>
283  string(10) "2147483648"
284}
285array(1) {
286  [0]=>
287  string(11) "-2147483649"
288}
289array(1) {
290  [0]=>
291  string(11) "34359738369"
292}
293array(1) {
294  [0]=>
295  string(10) "2147483649"
296}
297array(1) {
298  [0]=>
299  string(11) "-2147483649"
300}
301array(1) {
302  [0]=>
303  string(1) "0"
304}
305array(1) {
306  [0]=>
307  string(4) "-0.1"
308}
309array(1) {
310  [0]=>
311  string(1) "1"
312}
313array(1) {
314  [0]=>
315  string(6) "100000"
316}
317array(1) {
318  [0]=>
319  string(8) "-1000000"
320}
321array(1) {
322  [0]=>
323  string(9) "100000000"
324}
325array(1) {
326  [0]=>
327  string(11) "-1000000000"
328}
329array(1) {
330  [0]=>
331  string(2) "10"
332}
333array(1) {
334  [0]=>
335  string(7) "1050000"
336}
337bool(false)
338
339-- iteration 5 --
340array(1) {
341  [0]=>
342  string(11) "-2147483649"
343}
344array(1) {
345  [0]=>
346  string(10) "2147483648"
347}
348array(1) {
349  [0]=>
350  string(11) "-2147483649"
351}
352array(1) {
353  [0]=>
354  string(11) "34359738369"
355}
356array(1) {
357  [0]=>
358  string(10) "2147483649"
359}
360array(1) {
361  [0]=>
362  string(11) "-2147483649"
363}
364array(1) {
365  [0]=>
366  string(1) "0"
367}
368array(1) {
369  [0]=>
370  string(4) "-0.1"
371}
372array(1) {
373  [0]=>
374  string(1) "1"
375}
376array(1) {
377  [0]=>
378  string(6) "100000"
379}
380array(1) {
381  [0]=>
382  string(8) "-1000000"
383}
384array(1) {
385  [0]=>
386  string(9) "100000000"
387}
388array(1) {
389  [0]=>
390  string(11) "-1000000000"
391}
392array(1) {
393  [0]=>
394  string(2) "10"
395}
396array(1) {
397  [0]=>
398  string(7) "1050000"
399}
400bool(false)
401
402-- iteration 6 --
403array(1) {
404  [0]=>
405  string(11) "-2147483649"
406}
407array(1) {
408  [0]=>
409  string(10) "2147483648"
410}
411array(1) {
412  [0]=>
413  string(11) "-2147483649"
414}
415array(1) {
416  [0]=>
417  string(11) "34359738369"
418}
419array(1) {
420  [0]=>
421  string(10) "2147483649"
422}
423array(1) {
424  [0]=>
425  string(11) "-2147483649"
426}
427array(1) {
428  [0]=>
429  string(1) "0"
430}
431array(1) {
432  [0]=>
433  string(4) "-0.1"
434}
435array(1) {
436  [0]=>
437  string(1) "1"
438}
439array(1) {
440  [0]=>
441  string(6) "100000"
442}
443array(1) {
444  [0]=>
445  string(8) "-1000000"
446}
447array(1) {
448  [0]=>
449  string(9) "100000000"
450}
451array(1) {
452  [0]=>
453  string(11) "-1000000000"
454}
455array(1) {
456  [0]=>
457  string(2) "10"
458}
459array(1) {
460  [0]=>
461  string(7) "1050000"
462}
463bool(false)
464
465-- iteration 7 --
466Bad scan conversion character " "
467Bad scan conversion character " "
468Bad scan conversion character " "
469Bad scan conversion character " "
470Bad scan conversion character " "
471Bad scan conversion character " "
472Bad scan conversion character " "
473Bad scan conversion character " "
474Bad scan conversion character " "
475Bad scan conversion character " "
476Bad scan conversion character " "
477Bad scan conversion character " "
478Bad scan conversion character " "
479Bad scan conversion character " "
480Bad scan conversion character " "
481bool(false)
482
483-- iteration 8 --
484array(1) {
485  [0]=>
486  string(11) "-2147483649"
487}
488array(1) {
489  [0]=>
490  string(10) "2147483648"
491}
492array(1) {
493  [0]=>
494  string(11) "-2147483649"
495}
496array(1) {
497  [0]=>
498  string(11) "34359738369"
499}
500array(1) {
501  [0]=>
502  string(10) "2147483649"
503}
504array(1) {
505  [0]=>
506  string(11) "-2147483649"
507}
508array(1) {
509  [0]=>
510  string(1) "0"
511}
512array(1) {
513  [0]=>
514  string(4) "-0.1"
515}
516array(1) {
517  [0]=>
518  string(1) "1"
519}
520array(1) {
521  [0]=>
522  string(6) "100000"
523}
524array(1) {
525  [0]=>
526  string(8) "-1000000"
527}
528array(1) {
529  [0]=>
530  string(9) "100000000"
531}
532array(1) {
533  [0]=>
534  string(11) "-1000000000"
535}
536array(1) {
537  [0]=>
538  string(2) "10"
539}
540array(1) {
541  [0]=>
542  string(7) "1050000"
543}
544bool(false)
545
546-- iteration 9 --
547array(1) {
548  [0]=>
549  string(11) "-2147483649"
550}
551array(1) {
552  [0]=>
553  string(10) "2147483648"
554}
555array(1) {
556  [0]=>
557  string(11) "-2147483649"
558}
559array(1) {
560  [0]=>
561  string(11) "34359738369"
562}
563array(1) {
564  [0]=>
565  string(10) "2147483649"
566}
567array(1) {
568  [0]=>
569  string(11) "-2147483649"
570}
571array(1) {
572  [0]=>
573  string(1) "0"
574}
575array(1) {
576  [0]=>
577  string(4) "-0.1"
578}
579array(1) {
580  [0]=>
581  string(1) "1"
582}
583array(1) {
584  [0]=>
585  string(6) "100000"
586}
587array(1) {
588  [0]=>
589  string(8) "-1000000"
590}
591array(1) {
592  [0]=>
593  string(9) "100000000"
594}
595array(1) {
596  [0]=>
597  string(11) "-1000000000"
598}
599array(1) {
600  [0]=>
601  string(2) "10"
602}
603array(1) {
604  [0]=>
605  string(7) "1050000"
606}
607bool(false)
608
609-- iteration 10 --
610array(1) {
611  [0]=>
612  string(4) "-214"
613}
614array(1) {
615  [0]=>
616  string(4) "2147"
617}
618array(1) {
619  [0]=>
620  string(4) "-214"
621}
622array(1) {
623  [0]=>
624  string(4) "3435"
625}
626array(1) {
627  [0]=>
628  string(4) "2147"
629}
630array(1) {
631  [0]=>
632  string(4) "-214"
633}
634array(1) {
635  [0]=>
636  string(1) "0"
637}
638array(1) {
639  [0]=>
640  string(4) "-0.1"
641}
642array(1) {
643  [0]=>
644  string(1) "1"
645}
646array(1) {
647  [0]=>
648  string(4) "1000"
649}
650array(1) {
651  [0]=>
652  string(4) "-100"
653}
654array(1) {
655  [0]=>
656  string(4) "1000"
657}
658array(1) {
659  [0]=>
660  string(4) "-100"
661}
662array(1) {
663  [0]=>
664  string(2) "10"
665}
666array(1) {
667  [0]=>
668  string(4) "1050"
669}
670bool(false)
671
672-- iteration 11 --
673array(1) {
674  [0]=>
675  string(11) "-2147483649"
676}
677array(1) {
678  [0]=>
679  string(10) "2147483648"
680}
681array(1) {
682  [0]=>
683  string(11) "-2147483649"
684}
685array(1) {
686  [0]=>
687  string(11) "34359738369"
688}
689array(1) {
690  [0]=>
691  string(10) "2147483649"
692}
693array(1) {
694  [0]=>
695  string(11) "-2147483649"
696}
697array(1) {
698  [0]=>
699  string(1) "0"
700}
701array(1) {
702  [0]=>
703  string(4) "-0.1"
704}
705array(1) {
706  [0]=>
707  string(1) "1"
708}
709array(1) {
710  [0]=>
711  string(6) "100000"
712}
713array(1) {
714  [0]=>
715  string(8) "-1000000"
716}
717array(1) {
718  [0]=>
719  string(9) "100000000"
720}
721array(1) {
722  [0]=>
723  string(11) "-1000000000"
724}
725array(1) {
726  [0]=>
727  string(2) "10"
728}
729array(1) {
730  [0]=>
731  string(7) "1050000"
732}
733bool(false)
734
735-- iteration 12 --
736array(1) {
737  [0]=>
738  NULL
739}
740array(1) {
741  [0]=>
742  string(10) "2147483648"
743}
744array(1) {
745  [0]=>
746  NULL
747}
748array(1) {
749  [0]=>
750  string(11) "34359738369"
751}
752array(1) {
753  [0]=>
754  string(10) "2147483649"
755}
756array(1) {
757  [0]=>
758  NULL
759}
760array(1) {
761  [0]=>
762  string(1) "0"
763}
764array(1) {
765  [0]=>
766  NULL
767}
768array(1) {
769  [0]=>
770  string(1) "1"
771}
772array(1) {
773  [0]=>
774  string(6) "100000"
775}
776array(1) {
777  [0]=>
778  NULL
779}
780array(1) {
781  [0]=>
782  string(9) "100000000"
783}
784array(1) {
785  [0]=>
786  NULL
787}
788array(1) {
789  [0]=>
790  string(2) "10"
791}
792array(1) {
793  [0]=>
794  string(7) "1050000"
795}
796bool(false)
797
798-- iteration 13 --
799array(0) {
800}
801array(0) {
802}
803array(0) {
804}
805array(0) {
806}
807array(0) {
808}
809array(0) {
810}
811array(0) {
812}
813array(0) {
814}
815array(0) {
816}
817array(0) {
818}
819array(0) {
820}
821array(0) {
822}
823array(0) {
824}
825array(0) {
826}
827array(0) {
828}
829bool(false)
830
831*** Done ***
832