fgets
関数を使用すると、1行ずつASCIIファイルを読み取ることができます。
clc;
close all;
clear all;
input = fopen('input.txt','r');
output = fopen('output.txt','w');
line = fgets(input);
fprintf(output,'%s',line);
cpt=0;
offset = 3;
while ischar(line)
cpt=cpt+1;
if (cpt==offset)
line = fgets(input);
continue;
end
line = fgets(input);
fprintf(output,'%s',line);
end
fclose(input);
fclose(output);
最初fgets
あなたは、メモリ内の入力ファイルから最初の行をコピーすることができます:あなたは(あなたが言ったようにその番号を知っている)スキップする行が発生したときだけ反復をスキップするcontinue
ステートメントを使用します。
次のfprintf
は、出力ファイルに書き込みます。
次に、ゼロに初期化されたカウンタを定義し、オフセットを定義します。つまり、最初の行を読み終えているので、スキップしたい行が1です。
ループを使用して、入力ファイルの各行をfgets
関数で読み取って、出力ファイルに直接書き込みます。ファイルの最後に達すると、fgets
は文字ではない-1を返し、ループが終了します。
あなたはcpt
が繰り返されると、それはオフセットに等しいならば、あなたが行をスキップしなければならないので、あなたがそれを読んでいますが、それを書いていないとcontinue
文はあなたがスキップし、ループの次の繰り返しにジャンプすることができますことに気づきます残りの指示。
改行文字を削除する場合は、fgets
の代わりにfgetl
を使用できます。
入力ファイル:
*予稿集、エコー= NO、モデル= NO、履歴= NO、接点= NO
*エレメント、タイプ= S4R
1、1、 9、189、84
2、9、10、190、189
3、10、11、191、190
4、11、12、192、191
*表面タイプ= ELEMENT、名前=サーフ-1
出力ファイル:
*予稿集、エコー= NO、モデル= NO、履歴= NO、接点= NO
*エレメント、タイプ= S4R
1、1、9、189、84
3、10、11、191、190
4、11、12、192、191
*表面タイプ= ELEMENT、名前=サーフ-1