C +±032-原稿読取-2020-3-7
方法(freopenは)
//freopen方式读写文件
#include<iostream>
#include<cstdlib>
#include<cstdio>
using namespace std;
int main()
{
int a,b;
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
cin>>a>>b;
cout<<a+b<<endl;
fclose(in);//关闭文件流
fclose(out);//关闭文件流
}
同じファイル内//sum.inとsum.out exeファイル
sum.in
1 2
sum.out //実行後
3
方法二(FILE *)
//FILE* fopen方法读写文件
#include<iostream>
#include<cstdlib>
#include<cstdio>
int main()
{
int i,len=0,temp[100];
FILE*in=fopen("a.txt","r");//指针指向输入文件
FILE*out=fopen("b.txt","w");//输出文件格式
for(i=0;!feof(in);i++)
{
fscanf(in,"%d",&temp[i]);//读取文件中的数据
len++;
}
for(i=0;i<len-1;i++)//写入文件
fprintf(out,"%d",temp[i]);
fclose(in);//关闭文件流
fclose(out);//关闭文件流
}
A.TXT
1 2 3 4 5 6 7
B.TXT //実行後
1234567
FILEの説明:各ファイルは、ファイルに関する情報を格納するために使用される、メモリ内のゾーンを開くための両方に使用されている(例えば、ファイル名、ファイルの状態とファイルの現在の場所、など)。この情報は、変数の型の構造体に格納されています。システムは、定義された構造タイプ、という名前のファイルがあります。ファイルの読み書きが終了した後、ファイルストリームをクローズ関数fcloseを使用する必要があります。
DESCRIPTION FEOF機能:ファイルポインタで(中)FEOF。それは2つだけの戻り値を持っています。戻り値1、それはそうでないファイルの終わり(EOF)、0に遭遇します。ライン9を使用してください!EOF(中)FEOFが満たされない場合にはfeof平均(に)、それはループのために実施しています。
読むために関数fprintfとfscanfは機能や書き込み機能は、フォーマットされている機能を、しかし、ファイルオブジェクトを読み書きする:fprintfのと関数fscanf関数は、機能を説明しました。
方法3(fstreamの)
//fstream
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int a,b,c;
ifstream fin("in.txt");
ofstream fout("out.txt");
fin>>a>>b>>c;
fout<<a*b*c<<endl;
fin.close();
fout.close();
return 0;
}
in.txt
2 3 4
// out.txtを実行した後、
24
方法IV(関数fread)
関数freadモデル:size_tfread(バッファボイド*、size_tのサイズ、size_tcount、ファイル内*);
緩衝液:アドレスデータ(ポインタ)を受信するための(1)。
(2)サイズ:単一要素のサイズ。バイトでは、ビットはありません。
(3)数:要素数。
データ・ファイル・ポインタを提供する:(4)。
(5)戻り値:要素の数をお読みください。
次のとおりです。
//fread读取文件1
#include<iostream>
#include<cstdlib>
#include<cstdio>
char a[1100000];
int main()
{
FILE*in=fopen("a.in","rb");
FILE*out=fopen("a.out","w");
int n=fread(a,1,1100000,in);
for(int i=0;i<n;i++)
fprintf(out,"%c",a[i]);
return 0;
}
a.in
1 2 3 4
a.outの//実行後
1 2 3 4
関数fread()は、文字の種類に応じて読み出されるので、データ型ビット値の読み出しが再度必要な値に変換する場合。リファレンスプログラム
次のとおりです。
//fread读取文件2
#include<iostream>
#include<cstdio>
using namespace std;
FILE * in=fopen("i.txt","rb");
int mark=0;
char a[10];
int getnum()//将char类型转换为int类型
{
int obj=0;
while(!(a[mark]>='0'&&a[mark]<='9'))
mark ++;
while(a[mark]>='0'&&a[mark]<='9')
obj=obj*10+a[mark++]-'0';
return obj;
}
int main()
{
freopen("p.txt","w",stdout);//文件输出
int s=1,i;
fread(a,6,1,in);//第二、三个参数依据数组大小而定,够用就好
for(i=0;i<3;i++)
s*=getnum();
cout<<s<<endl;
return 0;
}
i.txt
1 2 3 4 5
p.txt //実行後
6
これらの記述は、文字、さらにユーザの入力を待っているように関係なく、ファイルの読み取りおよび書き込み方法、最後の行すべきで、決して書き込みgetchar関数()またはシステム(「一時停止」)などの文、ことに注意してください。プログラムの形式でのファイルの読み書きは、一時停止する必要はありません。
4つのファイルの読み取りおよび書き込みメソッドの表の比較
読み取りと書き込みメソッド | freopenは | ファイル* | fstreamの | 関数fread |
---|---|---|---|---|
読み取りと書き込み速度 | <iostream> CINと遅くなりますこれらの標準入出力ストリームを使用するCOUTの場合、<stdio.h> 関数fscanfと速度のこれらの特殊な機能fprintfの使用は、読み取りと書き込みのファイルするために速くなります。 |
C言語固有。スピードが速くなります。 | C ++のみ。速いです。 | ファイルを読み込むための最も正確な最速の方法の一つと呼ばれます。でも、正確なスペースには読み取ることができます。それはファイル全体にすべての速度を読み取るために高速ですので。 |
メモリを取ります | 前者は後者より小さく、大きいです | 小さな | 大きな | 大きな |
100,000(0 <=データ<= 399)、再書き込み表のファイル比較テストデータを読み出します
読み取りと書き込みメソッド | freopenは | ファイル* | fstreamの | 関数fread |
---|---|---|---|---|
使用している場合 | 前者の後者0.06 0.34 | 0.06 | 0.06 | 0.06 |
メモリ(KB) | 後者は前者888 616 | 616 | 872 | 1300 |