In order to read input from a text file, I wrote the following code:
int main(){
int x;
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
scanf("%d", &x);
printf("%d\n", x);
system("pause");
return 0;
}
It works quite good.
However, in visual studio, the compiler gives me an error because of freopen and suggests me to use freopen_s instead. I try to understand how function freopen_s works, but I can't. My code:
int main(){
int x;
#ifndef ONLINE_JUDGE
FILE *stream;
freopen_s(&stream, "input.txt", "r", stdin);
#endif
scanf("%d", &x);
printf("%d\n", x);
system("pause");
return 0;
}
It does not output anything, and even the "pause" does not work. The cmd disappears right after the program finishes without anything printed. I don't know why the "stream" is used in freopen_s. Thank you for answering my question.
I would give you an alternate way. If you still want to use freopen, you can use "-D _CRT_SECURE_NO_WARNINGS" this option with the terminal command, the error message will be suppressed.
In VS you can add it under the following link -
Project-> "Project" Properties -> C/C++ -> Command Line -> Additional Options(Text box on bottom right).
This should resolve the issue!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With