为了从一个文本文件中读取输入,我写了下面的代码:如何使用功能freopen_s
int main(){
int x;
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
#endif
scanf("%d", &x);
printf("%d\n", x);
system("pause");
return 0;
}
它的工作原理相当不错。
但是,在visual studio中,编译器给我一个错误,因为freopen,并建议我使用freopen_s代替。我尝试了解函数freopen_s如何工作,但我不能。我的代码:
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;
}
它不输出任何内容,甚至“暂停”不起作用。程序结束后cmd会立即消失,不会打印任何内容。我不知道为什么在freopen_s中使用“流”。谢谢你回答我的问题。
即使暂停是Windows特定的,你也没有正确拼写'pause',这可能是为什么它没有效果。 –
你的代码适合我。 – jliv902
**注意:**长期以来,我认为fopen_s()和等价物只是微软用来推动更多厂商锁定的无用东西。但它实际上与fopen()有一个关键区别:fopen()让任何其他进程根据需要访问文件,而fopen_s()根据模式设置共享(“r”允许其他读者,“w”专门打开) – Medinoc