2

我正在研究 MATLAB 中的一个函数,它从文件中读取输入。到目前为止(在这里阅读了一些关于scanf漏洞的信息之后)我决定使用fgets来获取每一行,然后textscan提取单词,这些单词的格式总是“字符”,包括撇号。所以,我正在使用:

fid = fopen('file.txt');
tline = fgets(fid);
textscan(tline, '''%s''');

但是,我想允许人们使用 % 字符发表评论。我如何切断textscan以便

'word' 'anotherword' % 'comment'

不返回评论?

4

2 回答 2

2
fid = fopen('file.txt');
tline = fgets(fid);
pct = find(tline=='%');
tline(pct(1)-1:end)=[]; % deletes tline from first instance of '%' onward.
textscan(tline, '''%s''');

%请注意,即使它在引号中 ,上面的内容也会在任何一行之后被切断。

如果要在引用的字符串中允许字符 % ,则必须在删除其余 tline 之前对测试注释 % 执行更多逻辑。查看可能有用 的strcmp和函数。findstr

于 2012-06-13T23:58:47.813 回答
0

在调试时进行了更多阅读之后,我找到了一种更直接的方法来做到这一点。

textscan(tline, '''%s''', 'commentStyle', '%');
于 2012-06-15T15:46:34.797 回答