突出显示 C 语言中的嵌套事件

Highlighting nested occurences in C

提问人:HenrijsS 提问时间:11/17/2023 最后编辑:Remy LebeauHenrijsS 更新时间:11/17/2023 访问量:59

问:

我有这样的任务:

如果要将行打印为标准输出,请以红色行打印找到的文本的所有匹配项。注意正确呈现“嵌套实例”,例如,如果该行包含 aaax,并且搜索文本为 aa,则该行应按如下方式输出:

<红色>aaa</红色>x

我有以下代码来查找该事件并突出显示它,但它不会为后续查找执行此操作。

const char *RED_TEXT = "\x1b[41;1m";
const char *RESET_TEXT = "\x1b[0m";

for (int i = 0; newLine[i] != '\0'; i++)
{
    if (newLine[i] == searchText[0])
    {
        int j = 0;
        while (newLine[i + j] == searchText[j])
        {
            j++;
        }
        if (searchText[j] == '\0')
        {
            printf("%s", RED_TEXT);
            for (int k = 0; k < j; k++)
            {
                printf("%c", line[i + k]);
            }
            printf("%s", RESET_TEXT);
            i += j - 1;
        }
    }
    else
    {
        printf("%c", line[i]);
    }
}

在示例中,是要搜索的文本:
newLineaaaXsearchText"aa"

它找到前两个,但当它到达第三个时,它只检查前面的,在该示例中是 。aX

电流输出: 预期输出:
<red>aa</red>aX<red>aaa</red>X

c 字符串

评论


答: 暂无答案