modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/fprintf-2.c (about) 1 /* Verify that calls to fprintf don't get eliminated even if their 2 result on success can be computed at compile time (they can fail). 3 The calls can still be transformed into those of other functions. 4 { dg-skip-if "requires io" { freestanding } } */ 5 6 #include <stdio.h> 7 #include <stdlib.h> 8 #include <string.h> 9 10 int main (void) 11 { 12 char *tmpfname = tmpnam (0); 13 FILE *f = fopen (tmpfname, "w"); 14 if (!f) 15 { 16 perror ("fopen for writing"); 17 return 1; 18 } 19 20 fprintf (f, "1"); 21 fprintf (f, "%c", '2'); 22 fprintf (f, "%c%c", '3', '4'); 23 fprintf (f, "%s", "5"); 24 fprintf (f, "%s%s", "6", "7"); 25 fprintf (f, "%i", 8); 26 fprintf (f, "%.1s\n", "9x"); 27 fclose (f); 28 29 f = fopen (tmpfname, "r"); 30 if (!f) 31 { 32 perror ("fopen for reading"); 33 remove (tmpfname); 34 return 1; 35 } 36 37 char buf[12] = ""; 38 if (1 != fscanf (f, "%s", buf)) 39 { 40 perror ("fscanf"); 41 fclose (f); 42 remove (tmpfname); 43 return 1; 44 } 45 46 fclose (f); 47 remove (tmpfname); 48 49 if (strcmp (buf, "123456789")) 50 abort (); 51 52 return 0; 53 }