【问题标题】:Cutting off textscan after a character在一个字符后切断文本扫描
【发布时间】:2012-06-13 23:17:47
【问题描述】:

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

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

但是,我想让人们拥有 cmets,使用 % 字符。我如何切断textscan以便

'word' 'anotherword' % 'comment'

不返回评论?

【问题讨论】:

  • 什么人?您应该尝试澄清一下,因为不知道上下文会令人困惑。
  • @WebfootWitchHat 制作我正在阅读的文本文件的人。

标签: matlab file-io comments textscan


【解决方案1】:
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 之前对测试注释 % 执行更多逻辑。查看可能有用的strcmpfindstr 函数。

【讨论】:

    【解决方案2】:

    在调试过程中进行了更多阅读后,我找到了一种更直接的方法来执行此操作。

    textscan(tline, '''%s''', 'commentStyle', '%');
    

    【讨论】:

      最近更新 更多