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 の間のデータ ブロック