| Development Environment | ![]() |
テキストファイルから文字列を1行ずつ読み込む
MATLAB には、書式付きテキストファイルから1行ずつ読み込み、文字列ベクトルに格納する操作を行う2つの関数 fgetl とfgets を用意しています。この2つの関数は、ほぼ同一の機能を提供します。唯一の相違点は、fgets が改行キャラクタを文字列ベクトルにコピーしますが、fgetlはコピーしない、という点だけです。
以下のM-ファイル関数は、fgetlの使用例をデモンストレーションするものです。この関数は、fgetl を使って、ファイル全体を1行ずつ読み込みます。読み込んだそれぞれの行について、引数で指定された特定の文字列 (literal)が行の中に現れるかどうかをチェックします。
指定した特定の文字列が現れた場合には、この関数は行の中にliteralという文字列が現れた回数を表す数字を先ず印刷し、その後に行全体を印刷します。
function y = litcount(filename, literal)
% Search for number of string matches per line.
fid = fopen(filename, 'rt');
y = 0;
while feof(fid) == 0
tline = fgetl(fid);
matches = findstr(tline, literal);
num = length(matches);
if num > 0
y = y + num;
fprintf(1,'%d:%s\n',num,tline);
end
end
fclose(fid);
この例では、badpoemと名付けた、つぎの入力データファイルをチェックします。
Oranges and lemons, Pineapples and tea. Orangutans and monkeys, Dragonflys or fleas.
関数litcountを使って、このファイルに文字列'an'が何回現れるかを計算し、その結果と文字列を含む行全体を出力します。
litcount('badpoem','an')
2: Oranges and lemons,
1: Pineapples and tea.
3: Orangutans and monkeys,
| ファイル内の位置の制御 | 書式付きASCIIデータを読み込む | ![]() |