C で次のコードがあるとします。
FILE* a=fopen("myfile.txt","r");
FILE* b,c;
「a」には区切り行があり、分割したい場所を指定します。「a」の内容を「b」と「c」に分割したい。他のファイルを作成せずにこれを行いたいです。
また後で、「FILE*」を指すポインター配列を作成して、これを動的に実行したいと考えています。したがって、区切り行の数は任意になります。
この場合、区切り行は文字列「delim」を持つ任意の行であるとします。
コンセプトは次のとおりです。
1) fopen()INFILE と (最初の) OUTFILE
2) できるfgets()限り、INFILE からstrncmp()区切り文字までの行
2.a) 区切り文字が見つかりません: fputs()OUTFILE への行
2.b) 検出された区切り文字: fclose()OUTFILE とfopen()次の OUTFILE
2.c) ファイルの終わり: ブレーク ループ
3)fclose()インファイルとアウトファイル
またはこの方法:
1)fopen()インファイル
2)fseek()ストリームの最後に移動しftell()、ファイルの位置を取得するために使用します。これを呼び出しましょうN
3)rewind()ストリームとfread() Nそこからのバイトをバッファに入れます。
4)fclose()インファイル
5) できる限りstrstr()、バッファ内の区切り文字とfwrite()、OUTFILE の間のデータ ブロック