1

C で次のコードがあるとします。

FILE* a=fopen("myfile.txt","r");
FILE* b,c;

「a」には区切り行があり、分割したい場所を指定します。「a」の内容を「b」と「c」に分割したい。他のファイルを作成せずにこれを行いたいです。

また後で、「FILE*」を指すポインター配列を作成して、これを動的に実行したいと考えています。したがって、区切り行の数は任意になります。

この場合、区切り行は文字列「delim」を持つ任意の行であるとします。

4

1 に答える 1

2

コンセプトは次のとおりです。

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

于 2012-04-22T22:34:18.163 に答える