1--TEST--
2Test fscanf() function: usage variations - integer formats with integer values
3--FILE--
4<?php
5
6/*
7  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
8  Description: Parses input from a file according to a format
9*/
10
11/* Test fscanf() to scan different integer values using different interger format types */
12
13$file_path = __DIR__;
14
15echo "*** Test fscanf(): different integer format types with different integer values ***\n";
16
17// create a file
18$filename = "$file_path/fscanf_variation2.tmp";
19$file_handle = fopen($filename, "w");
20if($file_handle == false)
21  exit("Error:failed to open file $filename");
22
23// different valid  integer values
24$valid_ints = array(
25  0,
26  1,
27  -1,
28  -2147483648, // max negative integer value
29  -2147483647,
30  2147483647,  // max positive integer value
31  2147483640,
32  0x123B,      // integer as hexadecimal
33  0x12ab,
34  0Xfff,
35  0XFA,
36  -0x80000000, // max negative integer as hexadecimal
37  0x7fffffff,  // max positive integer as hexadecimal
38  0x7FFFFFFF,  // max positive integer as hexadecimal
39  0123,        // integer as octal
40  01,       // should be quivalent to octal 1
41  -020000000000, // max negative integer as octal
42  017777777777  // max positive integer as octal
43);
44// various integer formats
45$int_formats = array( "%d", "%hd", "%ld", "%Ld", " %d", "%d ", "% d", "\t%d", "\n%d", "%4d", "%30d", "%[0-9]", "%*d");
46
47$counter = 1;
48
49// writing to the file
50foreach($valid_ints as $int_value) {
51  @fprintf($file_handle, $int_value);
52  @fprintf($file_handle, "\n");
53}
54// closing the file
55fclose($file_handle);
56
57// opening the file for reading
58$file_handle = fopen($filename, "r");
59if($file_handle == false) {
60  exit("Error:failed to open file $filename");
61}
62
63$counter = 1;
64// reading the values from file using different integer formats
65foreach($int_formats as $int_format) {
66  // rewind the file so that for every foreach iteration the file pointer starts from bof
67  rewind($file_handle);
68  echo "\n-- iteration $counter --\n";
69  while( !feof($file_handle) ) {
70    var_dump( fscanf($file_handle,$int_format) );
71  }
72  $counter++;
73}
74
75echo "\n*** Done ***";
76?>
77--CLEAN--
78<?php
79$file_path = __DIR__;
80$filename = "$file_path/fscanf_variation2.tmp";
81unlink($filename);
82?>
83--EXPECTF--
84*** Test fscanf(): different integer format types with different integer values ***
85
86-- iteration 1 --
87array(1) {
88  [0]=>
89  int(0)
90}
91array(1) {
92  [0]=>
93  int(1)
94}
95array(1) {
96  [0]=>
97  int(-1)
98}
99array(1) {
100  [0]=>
101  int(-2147483648)
102}
103array(1) {
104  [0]=>
105  int(-2147483647)
106}
107array(1) {
108  [0]=>
109  int(2147483647)
110}
111array(1) {
112  [0]=>
113  int(2147483640)
114}
115array(1) {
116  [0]=>
117  int(4667)
118}
119array(1) {
120  [0]=>
121  int(4779)
122}
123array(1) {
124  [0]=>
125  int(4095)
126}
127array(1) {
128  [0]=>
129  int(250)
130}
131array(1) {
132  [0]=>
133  int(-2147483648)
134}
135array(1) {
136  [0]=>
137  int(2147483647)
138}
139array(1) {
140  [0]=>
141  int(2147483647)
142}
143array(1) {
144  [0]=>
145  int(83)
146}
147array(1) {
148  [0]=>
149  int(1)
150}
151array(1) {
152  [0]=>
153  int(-2147483648)
154}
155array(1) {
156  [0]=>
157  int(2147483647)
158}
159bool(false)
160
161-- iteration 2 --
162array(1) {
163  [0]=>
164  int(0)
165}
166array(1) {
167  [0]=>
168  int(1)
169}
170array(1) {
171  [0]=>
172  int(-1)
173}
174array(1) {
175  [0]=>
176  int(-2147483648)
177}
178array(1) {
179  [0]=>
180  int(-2147483647)
181}
182array(1) {
183  [0]=>
184  int(2147483647)
185}
186array(1) {
187  [0]=>
188  int(2147483640)
189}
190array(1) {
191  [0]=>
192  int(4667)
193}
194array(1) {
195  [0]=>
196  int(4779)
197}
198array(1) {
199  [0]=>
200  int(4095)
201}
202array(1) {
203  [0]=>
204  int(250)
205}
206array(1) {
207  [0]=>
208  int(-2147483648)
209}
210array(1) {
211  [0]=>
212  int(2147483647)
213}
214array(1) {
215  [0]=>
216  int(2147483647)
217}
218array(1) {
219  [0]=>
220  int(83)
221}
222array(1) {
223  [0]=>
224  int(1)
225}
226array(1) {
227  [0]=>
228  int(-2147483648)
229}
230array(1) {
231  [0]=>
232  int(2147483647)
233}
234bool(false)
235
236-- iteration 3 --
237array(1) {
238  [0]=>
239  int(0)
240}
241array(1) {
242  [0]=>
243  int(1)
244}
245array(1) {
246  [0]=>
247  int(-1)
248}
249array(1) {
250  [0]=>
251  int(-2147483648)
252}
253array(1) {
254  [0]=>
255  int(-2147483647)
256}
257array(1) {
258  [0]=>
259  int(2147483647)
260}
261array(1) {
262  [0]=>
263  int(2147483640)
264}
265array(1) {
266  [0]=>
267  int(4667)
268}
269array(1) {
270  [0]=>
271  int(4779)
272}
273array(1) {
274  [0]=>
275  int(4095)
276}
277array(1) {
278  [0]=>
279  int(250)
280}
281array(1) {
282  [0]=>
283  int(-2147483648)
284}
285array(1) {
286  [0]=>
287  int(2147483647)
288}
289array(1) {
290  [0]=>
291  int(2147483647)
292}
293array(1) {
294  [0]=>
295  int(83)
296}
297array(1) {
298  [0]=>
299  int(1)
300}
301array(1) {
302  [0]=>
303  int(-2147483648)
304}
305array(1) {
306  [0]=>
307  int(2147483647)
308}
309bool(false)
310
311-- iteration 4 --
312array(1) {
313  [0]=>
314  int(0)
315}
316array(1) {
317  [0]=>
318  int(1)
319}
320array(1) {
321  [0]=>
322  int(-1)
323}
324array(1) {
325  [0]=>
326  int(-2147483648)
327}
328array(1) {
329  [0]=>
330  int(-2147483647)
331}
332array(1) {
333  [0]=>
334  int(2147483647)
335}
336array(1) {
337  [0]=>
338  int(2147483640)
339}
340array(1) {
341  [0]=>
342  int(4667)
343}
344array(1) {
345  [0]=>
346  int(4779)
347}
348array(1) {
349  [0]=>
350  int(4095)
351}
352array(1) {
353  [0]=>
354  int(250)
355}
356array(1) {
357  [0]=>
358  int(-2147483648)
359}
360array(1) {
361  [0]=>
362  int(2147483647)
363}
364array(1) {
365  [0]=>
366  int(2147483647)
367}
368array(1) {
369  [0]=>
370  int(83)
371}
372array(1) {
373  [0]=>
374  int(1)
375}
376array(1) {
377  [0]=>
378  int(-2147483648)
379}
380array(1) {
381  [0]=>
382  int(2147483647)
383}
384bool(false)
385
386-- iteration 5 --
387array(1) {
388  [0]=>
389  int(0)
390}
391array(1) {
392  [0]=>
393  int(1)
394}
395array(1) {
396  [0]=>
397  int(-1)
398}
399array(1) {
400  [0]=>
401  int(-2147483648)
402}
403array(1) {
404  [0]=>
405  int(-2147483647)
406}
407array(1) {
408  [0]=>
409  int(2147483647)
410}
411array(1) {
412  [0]=>
413  int(2147483640)
414}
415array(1) {
416  [0]=>
417  int(4667)
418}
419array(1) {
420  [0]=>
421  int(4779)
422}
423array(1) {
424  [0]=>
425  int(4095)
426}
427array(1) {
428  [0]=>
429  int(250)
430}
431array(1) {
432  [0]=>
433  int(-2147483648)
434}
435array(1) {
436  [0]=>
437  int(2147483647)
438}
439array(1) {
440  [0]=>
441  int(2147483647)
442}
443array(1) {
444  [0]=>
445  int(83)
446}
447array(1) {
448  [0]=>
449  int(1)
450}
451array(1) {
452  [0]=>
453  int(-2147483648)
454}
455array(1) {
456  [0]=>
457  int(2147483647)
458}
459bool(false)
460
461-- iteration 6 --
462array(1) {
463  [0]=>
464  int(0)
465}
466array(1) {
467  [0]=>
468  int(1)
469}
470array(1) {
471  [0]=>
472  int(-1)
473}
474array(1) {
475  [0]=>
476  int(-2147483648)
477}
478array(1) {
479  [0]=>
480  int(-2147483647)
481}
482array(1) {
483  [0]=>
484  int(2147483647)
485}
486array(1) {
487  [0]=>
488  int(2147483640)
489}
490array(1) {
491  [0]=>
492  int(4667)
493}
494array(1) {
495  [0]=>
496  int(4779)
497}
498array(1) {
499  [0]=>
500  int(4095)
501}
502array(1) {
503  [0]=>
504  int(250)
505}
506array(1) {
507  [0]=>
508  int(-2147483648)
509}
510array(1) {
511  [0]=>
512  int(2147483647)
513}
514array(1) {
515  [0]=>
516  int(2147483647)
517}
518array(1) {
519  [0]=>
520  int(83)
521}
522array(1) {
523  [0]=>
524  int(1)
525}
526array(1) {
527  [0]=>
528  int(-2147483648)
529}
530array(1) {
531  [0]=>
532  int(2147483647)
533}
534bool(false)
535
536-- iteration 7 --
537
538Warning: fscanf(): Bad scan conversion character " " in %s on line %d
539NULL
540
541Warning: fscanf(): Bad scan conversion character " " in %s on line %d
542NULL
543
544Warning: fscanf(): Bad scan conversion character " " in %s on line %d
545NULL
546
547Warning: fscanf(): Bad scan conversion character " " in %s on line %d
548NULL
549
550Warning: fscanf(): Bad scan conversion character " " in %s on line %d
551NULL
552
553Warning: fscanf(): Bad scan conversion character " " in %s on line %d
554NULL
555
556Warning: fscanf(): Bad scan conversion character " " in %s on line %d
557NULL
558
559Warning: fscanf(): Bad scan conversion character " " in %s on line %d
560NULL
561
562Warning: fscanf(): Bad scan conversion character " " in %s on line %d
563NULL
564
565Warning: fscanf(): Bad scan conversion character " " in %s on line %d
566NULL
567
568Warning: fscanf(): Bad scan conversion character " " in %s on line %d
569NULL
570
571Warning: fscanf(): Bad scan conversion character " " in %s on line %d
572NULL
573
574Warning: fscanf(): Bad scan conversion character " " in %s on line %d
575NULL
576
577Warning: fscanf(): Bad scan conversion character " " in %s on line %d
578NULL
579
580Warning: fscanf(): Bad scan conversion character " " in %s on line %d
581NULL
582
583Warning: fscanf(): Bad scan conversion character " " in %s on line %d
584NULL
585
586Warning: fscanf(): Bad scan conversion character " " in %s on line %d
587NULL
588
589Warning: fscanf(): Bad scan conversion character " " in %s on line %d
590NULL
591bool(false)
592
593-- iteration 8 --
594array(1) {
595  [0]=>
596  int(0)
597}
598array(1) {
599  [0]=>
600  int(1)
601}
602array(1) {
603  [0]=>
604  int(-1)
605}
606array(1) {
607  [0]=>
608  int(-2147483648)
609}
610array(1) {
611  [0]=>
612  int(-2147483647)
613}
614array(1) {
615  [0]=>
616  int(2147483647)
617}
618array(1) {
619  [0]=>
620  int(2147483640)
621}
622array(1) {
623  [0]=>
624  int(4667)
625}
626array(1) {
627  [0]=>
628  int(4779)
629}
630array(1) {
631  [0]=>
632  int(4095)
633}
634array(1) {
635  [0]=>
636  int(250)
637}
638array(1) {
639  [0]=>
640  int(-2147483648)
641}
642array(1) {
643  [0]=>
644  int(2147483647)
645}
646array(1) {
647  [0]=>
648  int(2147483647)
649}
650array(1) {
651  [0]=>
652  int(83)
653}
654array(1) {
655  [0]=>
656  int(1)
657}
658array(1) {
659  [0]=>
660  int(-2147483648)
661}
662array(1) {
663  [0]=>
664  int(2147483647)
665}
666bool(false)
667
668-- iteration 9 --
669array(1) {
670  [0]=>
671  int(0)
672}
673array(1) {
674  [0]=>
675  int(1)
676}
677array(1) {
678  [0]=>
679  int(-1)
680}
681array(1) {
682  [0]=>
683  int(-2147483648)
684}
685array(1) {
686  [0]=>
687  int(-2147483647)
688}
689array(1) {
690  [0]=>
691  int(2147483647)
692}
693array(1) {
694  [0]=>
695  int(2147483640)
696}
697array(1) {
698  [0]=>
699  int(4667)
700}
701array(1) {
702  [0]=>
703  int(4779)
704}
705array(1) {
706  [0]=>
707  int(4095)
708}
709array(1) {
710  [0]=>
711  int(250)
712}
713array(1) {
714  [0]=>
715  int(-2147483648)
716}
717array(1) {
718  [0]=>
719  int(2147483647)
720}
721array(1) {
722  [0]=>
723  int(2147483647)
724}
725array(1) {
726  [0]=>
727  int(83)
728}
729array(1) {
730  [0]=>
731  int(1)
732}
733array(1) {
734  [0]=>
735  int(-2147483648)
736}
737array(1) {
738  [0]=>
739  int(2147483647)
740}
741bool(false)
742
743-- iteration 10 --
744array(1) {
745  [0]=>
746  int(0)
747}
748array(1) {
749  [0]=>
750  int(1)
751}
752array(1) {
753  [0]=>
754  int(-1)
755}
756array(1) {
757  [0]=>
758  int(-214)
759}
760array(1) {
761  [0]=>
762  int(-214)
763}
764array(1) {
765  [0]=>
766  int(2147)
767}
768array(1) {
769  [0]=>
770  int(2147)
771}
772array(1) {
773  [0]=>
774  int(4667)
775}
776array(1) {
777  [0]=>
778  int(4779)
779}
780array(1) {
781  [0]=>
782  int(4095)
783}
784array(1) {
785  [0]=>
786  int(250)
787}
788array(1) {
789  [0]=>
790  int(-214)
791}
792array(1) {
793  [0]=>
794  int(2147)
795}
796array(1) {
797  [0]=>
798  int(2147)
799}
800array(1) {
801  [0]=>
802  int(83)
803}
804array(1) {
805  [0]=>
806  int(1)
807}
808array(1) {
809  [0]=>
810  int(-214)
811}
812array(1) {
813  [0]=>
814  int(2147)
815}
816bool(false)
817
818-- iteration 11 --
819array(1) {
820  [0]=>
821  int(0)
822}
823array(1) {
824  [0]=>
825  int(1)
826}
827array(1) {
828  [0]=>
829  int(-1)
830}
831array(1) {
832  [0]=>
833  int(-2147483648)
834}
835array(1) {
836  [0]=>
837  int(-2147483647)
838}
839array(1) {
840  [0]=>
841  int(2147483647)
842}
843array(1) {
844  [0]=>
845  int(2147483640)
846}
847array(1) {
848  [0]=>
849  int(4667)
850}
851array(1) {
852  [0]=>
853  int(4779)
854}
855array(1) {
856  [0]=>
857  int(4095)
858}
859array(1) {
860  [0]=>
861  int(250)
862}
863array(1) {
864  [0]=>
865  int(-2147483648)
866}
867array(1) {
868  [0]=>
869  int(2147483647)
870}
871array(1) {
872  [0]=>
873  int(2147483647)
874}
875array(1) {
876  [0]=>
877  int(83)
878}
879array(1) {
880  [0]=>
881  int(1)
882}
883array(1) {
884  [0]=>
885  int(-2147483648)
886}
887array(1) {
888  [0]=>
889  int(2147483647)
890}
891bool(false)
892
893-- iteration 12 --
894array(1) {
895  [0]=>
896  string(1) "0"
897}
898array(1) {
899  [0]=>
900  string(1) "1"
901}
902array(1) {
903  [0]=>
904  NULL
905}
906array(1) {
907  [0]=>
908  NULL
909}
910array(1) {
911  [0]=>
912  NULL
913}
914array(1) {
915  [0]=>
916  string(10) "2147483647"
917}
918array(1) {
919  [0]=>
920  string(10) "2147483640"
921}
922array(1) {
923  [0]=>
924  string(4) "4667"
925}
926array(1) {
927  [0]=>
928  string(4) "4779"
929}
930array(1) {
931  [0]=>
932  string(4) "4095"
933}
934array(1) {
935  [0]=>
936  string(3) "250"
937}
938array(1) {
939  [0]=>
940  NULL
941}
942array(1) {
943  [0]=>
944  string(10) "2147483647"
945}
946array(1) {
947  [0]=>
948  string(10) "2147483647"
949}
950array(1) {
951  [0]=>
952  string(2) "83"
953}
954array(1) {
955  [0]=>
956  string(1) "1"
957}
958array(1) {
959  [0]=>
960  NULL
961}
962array(1) {
963  [0]=>
964  string(10) "2147483647"
965}
966bool(false)
967
968-- iteration 13 --
969array(0) {
970}
971array(0) {
972}
973array(0) {
974}
975array(0) {
976}
977array(0) {
978}
979array(0) {
980}
981array(0) {
982}
983array(0) {
984}
985array(0) {
986}
987array(0) {
988}
989array(0) {
990}
991array(0) {
992}
993array(0) {
994}
995array(0) {
996}
997array(0) {
998}
999array(0) {
1000}
1001array(0) {
1002}
1003array(0) {
1004}
1005bool(false)
1006
1007*** Done ***
1008