...
This noncompliant code example calls the getc() function with an expression as the stream argument. If getc() is implemented as a macro, the file may be opened multiple times (see FIO31 FIO24-C. Do not open a file that is already open).
| Code Block | ||||
|---|---|---|---|---|
| ||||
#include <stdio.h>
void func(const char *file_name) {
FILE *fptr;
int c = getc(fptr = fopen(file_name, "r"));
if (feof(stdin) || ferror(stdin)) {
/* Handle error */
}
if (fclose(fptr) == EOF) {
/* Handle error */
}
} |
...
Using an expression that has side effects as the stream argument to getc(), putc(), or putcgetwc() can result in unexpected behavior and possibly abnormal program termination.
...
Related Guidelines
...