在 Lex 中的输入文件中插入文本(使用 C)
-
22-07-2019 - |
题
我正在尝试帮助一位朋友完成大学作业,但我忘记了很多 C 和 Lex。
问题是,我们正在尝试解析 HTML 和相应的 CSS 文件并将其样式添加到标签中。
例如:
超文本标记语言
<body>
</body>
CSS
body{color:black;}
修改后的 HTML
<body style="color:black;">
</body>
所有正则表达式和宏都已完成。
问题: 输入的 HTML 和修改后的 HTML 必须是同一个文件。我们尝试重定向两者 音音 和 yyout 到同一个文件...然后使用 fputs(text, yyout);其中 text 是带有所有样式信息(和 style="")的 char * 。这不起作用。
所以...你们能帮助他吗?
重要的是不要丢失文件中位置的概念(因此 style="" 会转到正确的标签)。
谢谢
解决方案
将 yyin 和 yyout 重定向到同一文件将不起作用。( 就像你已经知道的那样 ) 。我的方法是:
- 创建临时文件
- yyout 写入临时文件
- 解析完成后,备份输入文件以确保安全
- 用临时文件替换输入文件
没有其他方法,如果 yyout 与 yyin 相同,您的(原始输入)文本将重叠。
不隶属于 StackOverflow