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データを読み込む | ![]() |