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.
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
fopen
function has implementation-specific behavior related to whether it setserrno
on 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