MISRA C++:2008 Rule 27-0-1
The stream input/output library <cstdio> shall not be used
Description
Rule Definition
The stream input/output library <cstdio> shall not be used.1
Rationale
Functions in cstdio such as gets(), fgetpos(), fopen(), ftell(), etc. have unspecified, undefined and implementation-defined behavior.
For instance:
The
gets()function:does not check if the number of characters provided at the standard input exceeds the bufferchar * gets ( char * buf );
buf. The function can have unexpected behavior when the input exceeds the buffer.The
fopenfunction has implementation-specific behavior related to whether it setserrnoon errors or whether it accepts additional characters following the standard mode specifiers.
Polyspace Implementation
Polyspace® reports a violation of this rule if you use the functions declared in <cstdio>. Polyspace detects the use of these cstdio functions:
File operation functions such as
remove()andrename().File access functions such as
fclose(),fflush(), andfopen().Formatted input/output functions such as
fprintf(),fscanf(),printf(), andscanf().Character input output functions such as
fgetc(),fgets(),fputc(), andgetc().Direct input/output functions such as
fread()andfwrite().File positioning functions such as
fgetpos()andfsetpos().Error handling functions such as
clearerr(),ferror(), andperror().
Troubleshooting
If you expect a rule violation but Polyspace does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Examples
Check Information
| Group: Input/output Library |
| Category: Required |
Version History
Introduced in R2013b
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.