我需要搜索大约30行的文本文件。我需要它逐行搜索并根据文本文件中的位置抓取数字,这些数字在整个文本文件中保持不变。目前我需要获得前两个数字,然后获得每行的最后4个数字。我的代码现在:
FileToOpen = fopen(textfile.txt)
if FileToOpen == -1
disp('Error')
return;
end
while true
msg = fgetl(FileToOpen)
if msg == -1
break;
end
end
我想尽可能使用fgetl
命令,因为我有点知道这个命令,但是如果它们是一种更容易受欢迎的方式。
答案 0 :(得分:0)
这看起来是一个好的开始。您应该能够使用msg - '0'
来获取数字的值。对于ascii代码,数字按正确的顺序(0,1,2,3,4,5,6,7,8,9)彼此相邻放置。使用'0'
减去时所执行的操作是使用ascii代码'0'
减去msg。然后,您将获得数字
tmp = msg - '0';
idx = find(tmp>=0 & tmp < 10); % Get the position in the row
val = tmp(idx); % Or tmp(tmp>=0 & tmp < 10) with logical indexing.
我同意fgetl
可能最适合用于没有特定结构的文本。但是,如果你有一个特殊的文本结构,你可以使用它,从而能够使用更有效的算法。
如果您确实在找到文本中数字的绝对位置后,可以为每次迭代保存msgLength = msgLength + length(msg)
并使用它来计算数字的绝对位置。