gpt4 book ai didi

c - 读取 C 源文件并跳过/**/comments

转载 作者:太空宇宙 更新时间:2023-11-04 07:11:46 25 4
gpt4 key购买 nike

我设法编写代码以跳过 C 源代码中的 // 注释:

while (fgets(string, 10000, fin) != NULL)
{
unsigned int i;
for (i = 0; i < strlen(string); i++)
{
if ((string[i] == '/') && (string[i + 1] == '/'))
{
while (string[i += 1] != '\n')
continue;
}
//rest of the code...

我已经尝试为 /**/ 评论做类似的事情:

if ((string[i] == '/') && (string[i + 1] == '*'))
{
while (string[i += 1] != '/')
continue;
}

if ((string[i] == '*') && (string[i + 1] == '/'))
{
while (string[i -= 1])
continue;
}

但它会逐行读取,例如,如果我有,

/*

text*/

然后它计算文本。

我该如何解决这个问题?

最佳答案

即使您认为可以工作的代码也有几个问题:

  1. 它不识别任何上下文,所以它会将出现在字符串常量或 /* ... */ 注释中的 // 视为开始评论。
  2. 万一您碰巧有很长的行,它们将被截断(包括它们的终止换行符)。

归根结底,C是面向流的语言,而不是面向行的语言。它应该以这种方式解析(逐个字符)。为了正确完成这项工作,您确实需要实现一个更复杂的解析器。如果您准备学习一种新工具,那么您可以考虑将您的程序基于 Flex 词法分析器。

关于c - 读取 C 源文件并跳过/**/comments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27847725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com