TICS Coding Standard Viewer 
TIOBE Software Quality Framework
Print-friendly version
©TIOBE Software www.tiobe.com
ASML C Coding Standard

Rule:  7.19.fChecked automatically with code checker

Synopsis:Do not access members of type FILE directly.
Severity Level:6



The FILE struct can be different on different operating systems. Source code should not depend on the member fields. Programs that access for instance the "_fileno" field directly are in risk of accessing another file descriptor and causing unpredictable harm to the system (write to another file, close another file or socket, etc.). Use the available functions for FILE instead. Examples of such functions are fopen(), fclose(), fread(), fwrite(), fflush(), fgetline(), fseek(), fscanf(), fgets(), fgetc(), etc.


FILE * f = fopen("/tmp/test", "w");
unsigned char c_lookahead = *f->_ptr; /* WRONG: not portable */
printf("file descriptor number: %d\n", f->_fileno); /* WRONG: not portable */ 
long pos = ftell(f); /* RIGHT */