freopen
我也不知道爲什麼要讀作(到底是空閒打開還是免費打開或者自由打開)
con
先說一個CCF最恨的東西:#include<con>
沒錯,就是那個無限編譯的東西(禁賽三年好虛啊)
放一下編譯效果
正常編譯:
con編譯:
沒錯那個任務管理器就是拿來關的
(卡到不能手動點紅叉叉)
正式的講一下
爲什麼要講con?提醒大家NOIP不要用,小心禁賽
其實,每個自己運行的 代碼中都可以加上這兩句(經測試,OJ(至少)上千萬不能用)
freopen("CON","r",stdin);
freopen("CON","w",stdout);
其它文件流
- 。就是你打比賽的時候不打爆零的東西。標準輸入流。例見下。
- 。同上。就是打開標準文件輸入輸出。標準輸出流。
- 。標準錯誤流。其實…沒什麼用…下面也有小說明。
栗子
stdin和stdout的栗子
#include<cstdio>
#include<conio.h>//只是用着玩,NOIP會CE
int main() {
getch();//還沒有打開文件輸入,會在小黑板上敲一下再繼續
freopen("a+b.in","r",stdin);
printf("Welcome To A+B Problem");//還沒有打開文件輸出,會輸出在小黑板上
freopen("a+b.out","w",stdout);
scanf("%d %d",&a,&b);
printf("%d",a+b);//這兩個都是在文件裏面進行的
};
stderr的栗子
其實…沒啥用…(一個錯誤流能有啥用)
好吧,之前介紹過CON,其實這東西和CON差不多,也可以打開標準輸入輸出
如下,可以直接交到A+b Problem裏
#include<cstdio>
int a,b;
int main()
{
freopen("testdata.in","r",stderr);
freopen("testdata.out","w",stderr);
scanf("%d%d",&a,&b);
printf("%d",a+b);
}
沒有多的了
fopen
其實我是相信大家對freopen是比較熟悉的,所以主要介紹一下
,就是,用於在C語言中打開文件(以下代碼皆爲C語言)
頭文件:#include<stdio.h>
這裏僅給出一般的爲了輸入輸出的用法
(爲什麼又是A+B):
#include<stdio.h>
FILE* fin,fout;//定義文件指針
int main() {
fin=fopen("testdata.in","rb");
fout=fopen("testdata.out","wb");
int a,b;
fscanf(fin,"%d%d",&a,&b);//從輸入文件指針中讀入
fprintf(fout,"%d",a+b);//輸出到輸出文件指針中
fclose(fin); fclose(fout);//關閉輸入輸出文件,可省略
}
文件指針就代表文件,相應的必須用fscanf和fprintf
別以爲fopen很難用,其實它改成標準輸入輸出很方便,如下
#include<stdio.h>
FILE* fin,fout;//定義文件指針
int main() {
fin=fopen("testdata.in","rb");
fout=fopen("testdata.out","wb");
fin=stdin; fout=stdout;
int a,b;
fscanf(fin,"%d%d",&a,&b);//從輸入文件指針中讀入
fprintf(fout,"%d",a+b);//輸出到輸出文件指針中
//必須省略fclose
}
其實還挺快的
fstream
文件流就不多說了……
頭文件:#include<fstream>+using namespace std
額,然後,可以用這種方式定義一個文件流
#include<fstream>
using namespace std;
ifstream fin;
ofstream fout;
int main() {
fin.open("testdata.in");
fout.open("testdata.out");
int a,b;
fin>>a>>b;
fout<<a+b;//這兩句是文件操作
printf("A+B Problem 666");//這一句是輸出在小黑板上的
cout<<"A+B Problem 666";//這一句是輸出在小黑板上的
}
還有,平常使用string
會用getline
,就要換成
string s;
getline(fin,s);
Over!