1 /*
2  * Copyright 2016 The Emscripten Authors.  All rights reserved.
3  * Emscripten is available under two separate licenses, the MIT license and the
4  * University of Illinois/NCSA Open Source License.  Both these licenses can be
5  * found in the LICENSE file.
6  */
7 
8 #include <stdio.h>
9 #include <string.h>
10 #include <stdlib.h>
11 
main()12 int main() {
13 #define CHECK(str)                     \
14   {                                    \
15     char name[1000];                   \
16     memset(name, 0, 1000);             \
17     int prio = 99;                     \
18     sscanf(str, "%s %d", name, &prio); \
19     printf("%s : %d\n", name, prio);   \
20   }
21   CHECK("en-us 2");
22   CHECK("en-r");
23   CHECK("en 3");
24 
25   printf("%f, %f\n", atof("1.234567"), atof("cheez"));
26 
27   char float_formats[] = "fegE";
28   char format[] = "%_";
29   for (int i = 0; i < 4; ++i) {
30     format[1] = float_formats[i];
31 
32     float n = -1;
33     sscanf(" 2.8208", format, &n);
34     printf("%.4f\n", n);
35 
36     float a = -1;
37     sscanf("-3.03", format, &a);
38     printf("%.4f\n", a);
39   }
40 
41   char buffy[100];
42   sscanf("cheez some thing moar 123\nyet more\n", "cheez %s", buffy);
43   printf("|%s|\n", buffy);
44   sscanf("cheez something\nmoar 123\nyet more\n", "cheez %s", buffy);
45   printf("|%s|\n", buffy);
46   sscanf("cheez somethingmoar\tyet more\n", "cheez %s", buffy);
47   printf("|%s|\n", buffy);
48 
49   int numverts = -1;
50   printf("%d\n",
51          sscanf("	numverts 1499\n", " numverts %d",
52                 &numverts));  // white space is the same, even if tab vs space
53   printf("%d\n", numverts);
54 
55   int index;
56   float u, v;
57   short start, count;
58   printf("%d\n",
59          sscanf("	vert 87 ( 0.481565 0.059481 ) 0 1\n",
60                 " vert %d ( %f %f ) %hu %hu", &index, &u, &v, &start, &count));
61   printf("%d,%.6f,%.6f,%hu,%hu\n", index, u, v, start, count);
62 
63   int neg, neg2, neg3 = 0;
64   printf("%d\n", sscanf("-123 -765 -34-6", "%d %u %d", &neg, &neg2, &neg3));
65   printf("%d,%u,%d\n", neg, neg2, neg3);
66 
67   {
68     int a = 0;
69     sscanf("1", "%i", &a);
70     printf("%i\n", a);
71   }
72 
73   char buf1[100], buf2[100], buf3[100], buf4[100];
74   memset(buf4, 0, 100);
75 
76 
77   int numItems = sscanf("level=4:ref=3", "%255[^:=]=%255[^:]:%255[^=]=%c",
78                         buf1, buf2, buf3, buf4);
79   printf("%d, %s, %s, %s, %s\n", numItems, buf1, buf2, buf3, buf4);
80 
81   numItems = sscanf("def|456", "%[a-z]|%[0-9]", buf1, buf2);
82   printf("%d, %s, %s\n", numItems, buf1, buf2);
83 
84   numItems = sscanf("3-4,-ab", "%[-0-9],%[ab-z-]", buf1, buf2);
85   printf("%d, %s, %s\n", numItems, buf1, buf2);
86 
87   numItems = sscanf("Hello,World", "%[A-Za-z],%[^0-9]", buf1, buf2);
88   printf("%d, %s, %s\n", numItems, buf1, buf2);
89 
90   numItems = sscanf("Hello4711", "%[^0-9],%[^0-9]", buf1, buf2);
91   printf("%d, %s\n", numItems, buf1);
92 
93   numItems = sscanf("JavaScript", "%4[A-Za-z]", buf1);
94   printf("%d, %s\n", numItems, buf1);
95 
96   numItems = sscanf("[]", "%1[[]%1[]]", buf1, buf2);
97   printf("%d, %s, %s\n", numItems, buf1, buf2);
98 
99   return 0;
100 }
101