2011-12-16 74 views

回答

2

您有fgetl嗎?如果是這樣,你能做到這一點循環:

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); 

否則,你可以做一些黑客,如:

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碼。但是這似乎不可靠,特別是如果您遇到使用回車而不是換行符的文件。