C言語のファイル操作(RPM)

(記事のカテゴリ「C / C ++」があるが、唯一の基本的な手順は、未来を恐れて忘れてしまった。参照の上、この比較的精巧なメモであることを左)

C言語のファイル操作関数

カテゴリー: C / C
13.1C言語文書
1、2つのファイルアクセスモード(入力、出力)
シーケンシャルアクセス
直接アクセス
2、の形で記憶されたデータの2種類の
テキストファイルの
バイナリ
 
 
ファイルポインタ13.2
ポインタ変数の一般的な形式定義ファイルの種類:
FILE *ポインタ変数名;
例:
FILE * FP 1、* FP 2。
 
 
13.3は、ファイルを開き
、ファイルを使用する前に、関数fopenを使用してファイルを開くC形式のファイルを開きます..
のfopen(ファイル名、ファイルの使用);
この関数は、このような:.にファイルタイプのポインタを返す
のFILE *の FP ;
FP =のfopen(「file_1」、「R」);
呼び出しが成功すると、 FPの ポイントfile_1に、それ以外の場合は、次のステートメントを使用してテストする、文書の適切な使用を確保するためにして、NULLを返します:.
IF(( FP =のfopen( "file_1"、 "R&LT"))== NULL)
{
のprintf( "N- \このファイル開くことができません");
終了(0);
}
次のようにファイルの最も一般的な使用方法とその意味は以下の通りです
。1、 "R&LT"です。テキストファイルを開いているお読みください。(エラーが存在しない)
「RB。」、2バイナリファイルを読み込み用にオープンされています。
3、「ワット」のテキストファイルを書き込むために開かれた。(新しい建設は逆に、存在する場合、ファイルから、オリジナルコンテンツ)が上書きされる開始位置を書き込む
。4、「WB。」バイナリファイルを書き込むために開かれた。
5、「A」 ファイルにデータを追加するには、テキストファイルが開かれた(新があれば、もう一方の手を、元のファイルに付加されます)。
。6、「AB」は、データファイルの後に追加され、バイナリファイルを開きます。
ファイルの最も一般的な使用と、次の意味があります。
... 7、「R&LT +」読み取りおよび書き込み(読み取り、スクラッチテキストファイルを開くには;)新しいデータが、その後、同じ占有スペースをカバーして、データを書き込むための
8、「RB +」読書のためのバイナリファイルを書き込み、その後の時にのみ開かれて読み取りと書き込み、位置の関数で読み取りおよび設定することができます。開始位置を記述します。
9、「W +」。まず、新しいファイルを作成して書き込み、その後、あなたはスクラッチ読み取りから開始することができます。(ファイルが存在する場合は、元のコンテンツは消えます)
10、「WB +。」機能と「+ W」読み取りと書き込み、読み込み、開始位置を書くだけで、その後は、位置の関数によって提供することができると。
最も一般的なファイルとその意味を使用して次のとおりです。
... 11、「A +」と機能「」同じ;ファイルのみ新しいテールデータを追加した後に最初から読み取ることができる。
12は「AB&+」機能と「A +」であり、同じ;.新しいデータファイルの末尾が追加された後にのみ、読み出し開始位置は位置の関数で設定することができます。
 
 
13.4ファイルを閉じます
書き込み動作は、ファイルを完了すると、FCLOSE関数を使用してファイルをクローズ有する:.
FCLOSE(ファイルポインタ)
として:FCLOSE( FPを )。
 

13.5コールGETC(fgetc関数)とPUTC(FPUTC)関数の入力と出力
を出力するコールPUTC(又はFPUTCの)関数文字
コール形式:
PUTC(CH、 FP );
機能:CH書かれた文字ファイルポインタ FP 成功の出力は、関数はPUTC文字出力を返す場合、ファイルが呼ばれる、そうでない場合、EOFを返す.EOF値が-1に等しいstdio.hのファイルライブラリ関数で定義された記号定数値です。
 
 
入力と出力の機能のための13.5呼び出しのgetc(fgetc関数)とPUTC(FPUTC)
のような:それはfile_1.datという名前のファイルに出力され、テキストは、キーボード入力などの文字@記号で終わる、キーボードから入力
する#include
ボイドメイン( )
{
FILEの*のfpout;
CHAR CH;
IF(fpout = fpopen( "file_1"、 "W")== NULL)は
{
)のprintf( "!このFile \ N-を開くことができません";
終了(0);
}
CH = GETCHAR ();
一方、(CH = '@'!)
{FPUTCの(CH、fpout); CH = GETCHAR();}
FCLOSE(fpout);
}
2. GETC呼び出し(またはfgetc関数)文字入力関数
の形の呼び出し:
CH ; = GETC(PF)
PF指定されたファイルは、文字から読み出され、それが戻り値として機能する:関数である。
たとえば、次の内容は、本file_1.datディスク上のテキストファイルであり、端末に出力されます。画面上に。
#includeし
{main()のボイド
FILEの*のFPIN。
文字chを、
IF((FPIN =用のfopen( "file_1.dat"、 "R"))== NULL)
{のprintf( "このファイルを開く望めない\ N!");出口(0);}
CH = fgetc関数(FPIN) ;
一方、(!CH = EOF)
{のputchar(CH)。CH = fgetc関数(FPIN);}
FCLOSE(FPIN)。
}
 

13.6エンドFEOFファイル機能を解析
テキストファイルの終わりとしてEOFフラグが、バイナリ、バイナリファイル、テキストファイルであってもよいと判断することができる分析.feofターミネーターとして機能することができない。
例:テキストファイルを変換するためのプログラム(フォームのコマンドラインコマンドのオブジェクトから別のファイル(オブジェクト)、ソースファイル名とファイル名にソース)次のように
実行可能プログラム名、ソースファイル名のファイル名が
#includeし
ボイドFILECOPY(ファイル*、ファイル*)を、
ボイドメイン(int型ARGC、CHAR * ARGV []){
FILEの*のFPIN、* fpout;
IF(ARGC == 3)
{=のfopen FPIN(ARGVの、 "R&LT" [1]);
fpout =のfopen(ARGV [2] "W");
FILECOPY(FPIN、fpout);
fcloseを(FPIN); fcloseを(fpout);
}
。他のIF(のargc> 3)
のprintf( "N- \ !!あまりにも多くのファイル名";

のprintf(「がありますINPUTまたはNO出力用のファイル名!! \ N-);
}
無効FILECOPY(FILE *のFPIN、 FILEの* fpout)
{
チャーCH。
CH = GETC(FPIN)。
しばらく(FEOF(FPIN)!)
{PUTC(CH、fpout)。CH = GETC(FPIN);}
}
 

13.7fscanf機能とfprintfの関数
1、関数fscanf関数
オブジェクトが、入力データに類似のみ入力形式としてテキストファイルから関数fscanf、およびscanf関数は、コールの形式でディスク上のテキストファイルである:.
関数fscanf(ファイルポインタ、フォーマット制御文字列、エントリテーブル)
、例えば:関数fscanf( FP 、 "%Dの%のD"、&A、&B);
関数fscanf(STDIN、 "%のDの%のD"、&A、&B);
scanf関数に相当する(「%dのDの%」、&、&B);
3.fprintf関数
fprintf関数出力点を除いて、ASCIIコード形式のテキストファイルと.Fprintf類似性関数のprintf関数に対応する文字、及び出力にメモリ内のデータのフォーマットを変換しますディスク形として呼ばれるテキストファイルの形式で格納されたコンテンツは、次の
関数fprintf(ファイルポインタ、フォーマット制御文字列、出力項目テーブル)
など、:関数fprintf( FP 、「%のDの%のD」、X、Y)を、
次の文の関数fprintfを(STDOUT、 "%D%D "、x、y)は
 

13.8fgets機能と機能はfputs
1、fgets関数の
次の呼び出し:.形成する文字列にファイルから読み取るためfgets関数を
FGETS(STR、N-、 FPを );
関数関数である:から FP ファイルを読み取るためにN-1と称される完全なn-1個の文字、改行または読み出し動作のEOF端、および戻り値STRとしての機能を有していれば未読; strが空間開始アドレスに文字である。
13.8fgets関数fputs関数及び
2、fputs関数
FPUT関数列出力ファイル関数に次の形式を呼び出す:
fputs(STR、 FPを );
注:読みやすくするために、出力文字列に、それは「人工のように、添加されるべきである\ nは文字列の「この種類。
書式#include <stdio.hに>
する#include <iostreamの>
INTメイン(int型ARGC、チャー*のARGV [])
{
 char型ARR [10]。
 char * AP = "こんにちは!" ;
 FILEの* fpは、
 ((FP =のfopen( "hello.txt"、 "WT +"))== NULL)であれば
 {
  のprintf( "エラー!")。
  出口(1)。
 }
    fputs(AP、FP)。

 巻き戻し(FP)。//

 関数fgets(ARR、10、FP)。
 printf( "%sのを\ n"、ARR)。
 FCLOSE(FP)。
 0を返します。
}


13.9fread関数と関数fwriteの
例以下の構造を有する:
構造体{STの
[8]チャーNUMと、
フロートMK [5];
}ペールス[30];
以下、このデータは、ループ素子30に出力され たFP 呼ば文書。で
(I = 0;私は30 <; I ++の)のための
関数fwrite(&ペールス[I]、はsizeof(構造体ST),. 1、 FP )。
 

13.9fread関数と関数fwriteの
からステートメント以下 FP 各学生には、データファイルにクロックアレイで言及再びPERS。
I = 0;
関数fread(&PERS [I]、はsizeof(構造体ST),. 1、 FP ) ;
一方(FEOF(! FP ))
{I ++は、
関数fread(&ペールス[I]、はsizeof(構造体ST),. 1、 FP );
}
 

13.10ファイルの位置決め機能
1、 fseek 関数
のfseekの 機能は、場所を指定したファイルの場所にポインタを移動させるために使用され、その関数にここから読み取り操作または書き込みコールされる次の通りである:。
fseek関数 (PF、オフセット、原点)
PF:ファイルポインタ
オフセット:バイト単位変位単位の量は、限り整数。
起源は:.基準として位置ずれ量を指定するために使用される出発点である
。1、 fseek関数 の関数
の表現の変位量
始点を表す識別番号
SEEK_SET 0スタートファイルを
SEEK_END ファイルの2端
SEEK_CURファイルの1つの現在位置は
、次にPFはバイナリファイルをした時点とし、;
fseek関数 (PF 3 ,. 0L 、SEEK_SET)
のfseek (PF、-1 0L *はsizeof(int型)、 SEEK_END
テキストファイルの場合、変位量が0でなければなりません;場合:
fseek関数 (PF、 0L 、SEEK_SET)
のfseek (PF、 0L SEEK_END
2. ftellは関数
ファイルの位置ポインタの現在の位置、例えば位置;.として、ファイルポインタの最初のバイトの相対的な現在の数を与えられた機能取得する機能をFTELL
ロングTを、
T = ftellは(PF)、
誤差関数呼び出し、関数は-1Lを返し。
、我々は次のようにファイルのサイズを試験することができる:
のfseek FP 0L SEEK_END );
T = ftellは( FP );
3.rewind機能を
形式で呼び出します。
巻き戻し(PF);
関数が返さない関数の値は、バックファイルの先頭にファイルポインタの位置の関数です。
 

13.10アプリケーションファイル
10 test.txtのディスク・ファイルには2未満でない正の整数で、関数呼び出し達成するために必要なプログラミング置か:
1、呼び出された関数の素数を、統計情報10の整数を決定します素数の個数。
2、メイン機能で画面に出力しながら、すべての素数test.txtのディスク・ファイルの最後に追加されている。
の#include
の#include
INTプライム(INT []、INT N-)
{
I、J INT = 0フラグに= 0、K、;
(I = 0、I {(J = 2、J IF([I]%J == 0)
= 0フラグに{; BREAK;}
フラグに他= 1;
IF (フラグに)
{; K ++ [K]は[I] =}
}
戻りK;
}
ボイドメイン(){
int型N-、I、A [10];
FILE * FP
FPは、 関数fopen(「test1-2を=。 TXT "" R&LT +「);
(N = 0; N- <10; N - ++)
関数fscanf( FP 、 "%のD"、および[N])。
N =プライム(N)
fseek関数 FP 、O、2)。
用(i = 0; I {のprintf( "%3D"、[I]);
fprintfの( FP 、 "%3D"、[I]);
}
FCLOSE( FP );
}

ます。https://www.cnblogs.com/nniixl/archive/2007/04/23/724235.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34270606/article/details/94467946