爲了從一個文本文件中讀取輸入,我寫了下面的代碼:如何使用功能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