2011-12-16 5 views

答えて

2

fgetlはありますか?もしそうなら、あなたはこの小さなループを行うことができます。

f = fopen('myfile.txt', 'rb'); 
ctr = 0; 
[x, bytes] = fread(f, 8192); %# use an 8k intermediate buffer, change this value as desired 
while (bytes > 0) 
    ctr = ctr + sum(x == 10); %# 10 is '\n' 
    [x, bytes] = fread(f, 8192); 
end 
fclose(f); 

10は、改行文字のASCIIコードです:

f = fopen('myfile.txt', 'rt'); 
ctr = 0; 
ll = fgetl(f); 
while (!isnumeric(ll)) %# fgetl returns -1 when it hits eof. But you can't do ll != -1 because blank lines make it barf 
    ctr = ctr+1; 
    ll = fgetl(f); 
end 
fclose(f); 

そうでなければ、のようないくつかのハックを行うことができます。しかし、これは信頼できないようです。特に、改行ではなく改行を使用するファイルを見つけた場合にはそうです。

+1

実際には私は 'fgetl'を使用しています。 'fgetl'を使って行を数えることはかなり粗末な(そして非効率的な)ようです。私はもっ​​と良い方法があるかどうか疑問に思っていた... –

+0

'll!= -1'について説明してくれてありがとう。私はエラーが発生していて、理由を理解できませんでした。なぜ空白行に問題がありますか? –

+1

プロンプトで '''!= -1'と入力してみてください。答えが空でないことがわかります。 – mtrw

関連する問題