2013-10-21 122 views
0

需要量阅读文本文件忽略注释

我有一个txt文件,它看起来像这样。

START: 
#INCLUDE "INC1.txt" 
#INCLUDE "INC2.txt" 
END 

当我运行我的程序时,它应该包含包含文件和转储文件中的内容。倾销后它看起来像这样。

START: 
<Contents of INC1.txt> 
<Contents of INC2.txt> 
END: 

问题

我所面临的问题是,如果用户给出了包括注释(/ ** /)我不应该抛售这些内容。

例如,输入文件会是这样的。

START: 
#INCLUDE "INC1.txt" 
/******#INCLUDE "INC2.txt"**** 
This is a test message*******/ 
END: 

转储应该是这样的。

START: 
<Contents of INC1.txt> 
/******#INCLUDE "INC2.txt"**** 
This is a test message*******/ 
END: 

有什么简单的方法可以忽略评论。我只需要支持多行注释(/ ** /)?

请提供您的意见。

在此先感谢。

+5

您可以使用您的编译器的预处理器(即'cc -E'?) –

+1

处理文本处理的最佳方式是使用脚本。我会建议使用PERL脚本来用几行代码来实现您的需求。但是,如果你想用C语言实现这个功能,你必须编写自己的函数,或者你可以使用一些预定义的编译器功能来删除正在处理的输入文件中的注释。 – Anand

+1

注释是否始终在行的开始和结束处开始和结束?或者序列'/ *'也出现在* data *里面?是否应该删除注释结束行末尾的硬回车?是否有可能评论开始但不会结束? (在那种情况下,它是否应该“继续”到下一个文件中? – usr2564301

回答

1

按字符读取文件,并跟踪当前字符和前一个。字符。当前一个字符为/且当前字符为*时,请停止复制前一个字符进行输出,并且在字符为*/之前不要开始。

或使用正则表达式。有可能是C库,但sed可能会用最少的努力。

0

,你必须使用字符串操作,设置一个标志,在发现“/ ”,如果标志设置做你的评论的情况下想要的,并在发现“ /”复位标志,设置标志应该是前字符串操作,它应该像 1个标志设置或正在重置 2,如果标志设置处理它在评论 3否则你希望的方式的方式....

0

使用gcc --save与-临时工选项,会找到没有评论的.i文件...可能会为您解决问题。 谢谢,Jain