需要量
我有一个txt文件,看起来像这样。
START:
#INCLUDE "INC1.txt"
#INCLUDE "INC2.txt"
END
当我运行我的程序时,它应该包含include文件的内容并转储到文件中。倾销后,它看起来像这样。
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:
有没有简单的方法可以忽略这些评论。我只需要支持多行注释(/ ** /)?
请提供您的意见。
提前致谢。
答案 0 :(得分:1)
逐个字符地读取文件,并跟踪当前字符和前一个字符。字符。当前一个字符为/
且当前字符为*
时,请停止将前一个字符复制到输出,并且在字符为*
和/
之前不要启动。< / p>
或者使用正则表达式。可能有C库,尽管sed
可能会花费最少的努力。
答案 1 :(得分:0)
你必须使用字符串操作,在找到“/ ”时设置一个标志,如果在注释的情况下设置了标志,并在找到“ /”重置标志,设置标志应该在字符串操作之前,应该是这样的 1标志设置或重置 2如果标志集以评论的方式处理它 3其他你想要的方式......
答案 2 :(得分:0)
使用gcc和--save-temps选项,你会发现没有评论的.i文件......可能会为你找到一个解决方案。 谢谢,耆那教